C语言入门Day_19 初识函数

目录

1.函数的定义

2.函数的调用

3.易错点

4.思维导图


前言:

printf()我们已经很熟悉了,它有一个特定的功能,就是在屏幕上输出一行文字。之前的课程我们都称呼printf()为一个功能,实际上ta在编程中有个特定的名字——函数。

一个函数具有三个特征:输入,输出,函数的功能

之前我们频繁使用的printf()函数是一个“内置”的函数,也就是这个函数是编程语言自带的,或者提前定义好的.同时我们还可以根据自己的意愿自己编写函数,又叫自定义函数。

就像变量一样,函数也分为函数的定义和函数的使用,对于内置函数如printf()来说,我们可以直接使用。对于自定义函数来说,我们依旧需要先定义函数,然后再使用它。

1.函数的定义

1.1

下面我们来看看如何定义一个函数:

我们定义一个给任何输出的整数增加3,然后输出它的函数:

int AddThree(int nummber_a)
{number_a=number_a+3;return number_a;
}

1.函数输出的数据类  int

2.函数名  AddThree

3.函数的输入部分,这个输入的数据需要是整型int   int number_a

4.函数的具体代码,又称为函数体

5.函数的返回值,又称为函数的输出部分  return number_a;

第一部分是返回值的类型,就是使用这个函数的时候我们会返回一个什么数据类型的值,比如我们这里的函数就会返回一个int整型

int AddThree(int nummber_a)
{number_a=number_a+3;return number_a;
}

返回值类型里面我们可以看到除了之前学过的intfloat等等类型,

还有一个void,这个的意思是这个函数没有任何返回值

第二部分是函数的名字,又叫函数名,比如这里的函数名就是AddThree,函数名的命名规则和变量的命名规则一模一样

int AddThree(int nummber_a)
{number_a=number_a+3;return number_a;
}

第三部分是函数的输入部分,我们通过括号里的部分来给函数传入一些数据,比如这里的(int number_a)

int AddThree(int nummber_a)
{number_a=number_a+3;return number_a;
}

第四部分是函数的代码部分,又叫函数体,它用来实现函数的具体功能,比如这里的功能就是给一个数增加3:

int AddThree(int nummber_a)
{number_a=number_a+3;return number_a;
}

 函数体里面最需要注意的是返回值,它的关键字是return,返回的数据类型需要和函数一开始定义的的返回值数据类型保持一致

1.2

例如

int MultiTwo(int number_a)
{number_a=number_a*2;return number_a;  
}

2.函数的调用

2.1

调用函数的时候,我们需要使用函数名加括号内的参数的方式来使用它。

我们来调用上面定义的函数AddThree()

int a=10;
int b;
b=AddThree(a);
printf("%d\n",b);

1.定义变量a,并赋值10   

2.定义变量b   

3.调用函数AddThree(),并把返回值赋给b

int a=10;
int b;
b=AddThree(a);
printf("%d\n",b);

4.调用函数的过程,函数名AddThree(),以及输入的数据a

5.赋值符号,把函数调用的返回值赋值给变量b

6.打印变量b的值,这里会输出

2.2

函数调用就比函数的定义简单一些了,主要分为两部分,一部分是函数名,一部分是输入的数据

对于返回的数据,我们可以赋值给一个变量,也可以直接参与计算,还可以打印它,就像一个寻常的常量一样。

调用函数以后我们大多数时候会得到一个函数输出的内容,比如函数定义中的return number_a

但如果一个函数以void开头,这个函数就不会返回任何数值

所以返回值return关键字,并不是函数的必需部分,如果我们在函数中不写return,函数就不会返回任何值。

为什么编程中有函数这个机制呢?

因为函数可以降低代码的复杂度和代码的维护成本。
 

2.3

比如我们定义一个函数,它的功能是打印输入的整型数字五次。

Void PrintfFiveTimes(int number_a)
{printf("%d\n",int number_a);printf("%d\n",int number_a);printf("%d\n",int number_a);printf("%d\n",int number_a);printf("%d\n",int number_a);
}

如果我们没有这个函数,每次想要打印一个数字五次的时候,我们都需要调用五次printf(),这样代码就会很复杂。

有了PrintFiveTimes()函数以后,我们每次需要使用“打印五次”这个功能的时候,只需要调用这个函数就可以了,这样我们就降低了代码的复杂度

同时,如果我们忽然有一天想要把打印五次的数量,改成打印三次的话,没有函数的时候,我们需要把代码中所有“打印五次”的地方都进行修改

假设我们的代码中,如果有十个地方都使用了“打印五次”这个功能,我们就需要修改十处代码!

但我们使用函数的话,就可以只修改函数本身就可以了。也就是只修改一处代码。

这就是函数的第二个特点——降低代码维护成本

3.易错点

返回类型为void的函数没有返回值

对于函数,我们“先定义后使用”,函数的定义应该在main函数之前。

4.思维导图

最后我想说的是:

 在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试-----selenuim webDriver

文章目录 1.页面导航2.元素定位3. 浏览器操作4.获取元素信息5. 鼠标的操作6. 键盘操作7. 元素等待8.下拉框9.弹出框10.滚动条11.frame处理12.验证码处理(cookie) 1.页面导航 首先是导入对应的包 :from selenium import webdriver然后实例化:driver web…

网络安全宣传周|探索AI数字人的魅力和价值所在

9月11日至9月17日是国家网络安全宣传周,在福州举办的安全博览会上有着多种人工智能模型产品亮相现场,吸引着众多参观者的目光,尤其是AI数字人面对不同的问题、不同的场景都可以进行实时响应,不同于冷冰冰的传统智能客服的对话场景…

前端面试合集(二)

前端面试题合集 1.懒加载的原理及实现了解吗2.如何理解JS异步3.阐述一下 JS 的事件循环4.JS 中的计时器能做到精确计时吗?为什么? 1.懒加载的原理及实现了解吗 原理:当图片没有到达可视范围内时,图片不加载,当图片一旦…

Mobileye CEO来华:只有能控制住成本的公司,才能活下来

‍作者|德新 编辑|王博 上午9点近一刻,Mobileye CEO Amnon Shuashua步入酒店的会议室。由于Amnon本人是以色列希伯来大学的计算机科学教授,大部分人更习惯称他为「教授」。 时近以色列的新年,这趟教授的中国之行安排十分紧凑。 他率领了一…

遥遥领先的内存函数

目录 ​编辑 函数介绍 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.2 memmove 2.3 memcmp 函数实现 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.3 memcmp 函数介绍 1.1 strlen size_t strlen ( const char *…

SpringBoot整合Redis,基于Jedis实现redis各种操作

前言&#xff08;三步教你学会redis&#xff0c;主打一个实用&#xff09; springboot整合redis步骤&#xff0c;并基于jedis对redis数据库进行相关操作&#xff0c;最后分享非常好用、功能非常全的redis工具类。 第一步&#xff1a;导入maven依赖 <!-- springboot整合re…

小程序代码管理

“微信开发者工具”点击版本管理&#xff0c;然后点击代码管理会打开代码管理网页。 选择对应的项目组。 进来后点击创建项目。 输入git名称&#xff0c;然后选择命名空间&#xff0c;最后创建即可。 在刚才的“微信开发者工具”选择设置&#xff0c;然后添加远程。 输入名称&…

朋友圈大佬都去读研了,这份备考书单我码住了

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

pycharm安装jupyter,用德古拉主题,但是输入行全白了,看不清,怎么办?

问题描述 今天换了以下pycharm主题&#xff0c;但是jupyter界面输入代码行太白了&#xff0c;白到看不清楚这行的字&#xff0c;更不知道写的是什么&#xff0c;写到哪了&#xff0c;这还是挺烦人的&#xff0c;其他都挺正常的。 问题分析 目前来看有两个原因&#xff1a; 1、…

【新版vscode配置自动补全括号】

vscode新版配置自动补全括号方法 新版配置方法(Pylance) ①设置 -> 扩展 -> Pylance -> 将 python.analysis.completeFunctionParens 下方的选项打勾 ②直接在settings.json中添加"python.analysis.completeFunctionParens": true

【Apollo】自动驾驶技术的介绍

阿波罗是百度发布的名为“Apollo&#xff08;阿波罗&#xff09;”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。 帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 百度开放此项计划旨在建立一个以合作为中…

CSS - 快速实现悬浮吸顶,当页面滑动一定距离时固定吸附在顶部(position: sticky)

效果图 如下图所示&#xff0c;利用 position: sticky 属性轻松实现。 示例代码 新建一个 *.html 文件&#xff0c;一键复制运行起来。 <body><section class"content"><div class"item">我是悬浮吸顶区域</div><h1>我是…

AI时代:探索机器学习与深度学习的融合之旅

文章目录 1. 机器学习和深度学习简介1.1 机器学习1.2 深度学习 2. 为什么融合是必要的&#xff1f;2.1 数据增强2.2 模型融合 3. 深入分析&#xff1a;案例研究3.1 传统机器学习方法3.2 深度学习方法3.3 融合方法 4. 未来展望结论 &#x1f389;欢迎来到AIGC人工智能专栏~AI时代…

【Java Web】HTML 标签 总结

目录 1.HTML 2.标签 1. head 标签 1.图标 2.样式居中 2. body 标签 1.注释 &#xff1a; 2.加载图片 3.加载视频 效果 4.区域 效果 5.上下跳转&#xff0c;页面跳转 效果 6.表格 效果 7.有序列表&#xff0c;无序列表 效果 8.登录 效果 9.按钮 10.多选框…

Web之tomcat

[TOC]&#xff08;文章目录&#xff09; 1.程序架构 1.C/S(client/server) 比如&#xff1a;QQ、 微信、 LOL 优点&#xff1a;有一部分代码写在客户端&#xff0c; 用户体验比较好。 缺点&#xff1a; 服务器更新&#xff0c;客户端也要随着更新。 占用资源大。 2. B/S(brows…

【Spatial-Temporal Action Localization(二)】论文阅读2017年

文章目录 1. ActionVLAD: Learning spatio-temporal aggregation for action classification [code](https://github.com/rohitgirdhar/ActionVLAD/)[](https://github.com/rohitgirdhar/ActionVLAD/)摘要和结论引言&#xff1a;针对痛点和贡献相关工作模型框架思考不足之处 2.…

C语言双向链表

文章目录 前言双向链表链表头结点的创建节点尾插与尾删节点头插与头删特定位置插入或删除节点链表节点查找双向链表的销毁 链表的打印 前言 假期时间因为为学校开学考试做准备所以一直没更新博客&#xff0c;今天开始博客会陆续更新。 双向链表 之前我们说过了顺序表和单链表…

嵌入式这个领域会变得过于内卷吗?

今日话题&#xff0c;嵌入式这个领域会变得过于内卷吗&#xff1f;嵌入式开发主要服务于第二产业&#xff0c;尤其是制造业&#xff0c;包括电器、电气、机械、汽车、装备、航空航天等行业的“智能制造”部门&#xff0c;稳定性较强&#xff0c;不像互联网行业那样波动大。因此…

无涯教程-JavaScript - XNPV函数

描述 XNPV函数返回的现金Stream量表的净现值不一定是周期性的。要计算一系列定期现金Stream量的净现值,请使用NPV函数。 语法 XNPV (rate, values, dates)争论 Argument描述Required/OptionalRateThe discount rate to apply to the cash flows.RequiredValues 与日期付款时…

【javaSE】 反射与反射的使用

文章目录 &#x1f332;反射的定义&#x1f38d;反射的用途&#x1f334;反射基本信息&#x1f340;反射相关的类&#x1f6a9;Class类(反射机制的起源 )&#x1f388;Class类中的相关方法 &#x1f6a9;反射示例&#x1f388;获得Class对象的三种方式&#x1f388;反射的使用 …