一.引言
C语言中的函数是指完成某一特定任务的一小段代码。使用函数的好处很多,在后续若要重复完成某一任务时,我们就可以调用函数来实现,减少了不必要的代码,也提升了代码的可读性。
二.库函数
库函数就是我们在写代码时常用的函数,如:print,scanf等。这些函数是编译器厂商为我们提供的,方便了我们写代码。并且库函数的使用都需要包含对应的头文件,这里给大家一个链接可以查询库函数,库函数的使用方法
三.自定义函数
3.1语法形式
返回类型 函数名(形式参数)
{
}
我们可以将函数想象成一个工厂
原料 => 函数参数
产品 => 函数运行结果
举例:写一个加法函数来完成两数的相加
四.函数参数
4.1形式参数
形式参数需要交代变量名(可与实参的名字不同),变量类型,个数。
如上图中add(int x,int y),x和y就是形参
4.2实际参数
在调用函数时实际传递给函数的,如上图中add(a,b),a和b就是实参
- 实参可以是:常量,变量,表达式,函数等
4.3形参与实参间的关系
两者的存储空间不同
调用函数时才会分配空间给形参,并且函数调用完后形参会自动销毁形参的值改变不会影响实参的值,但当数组做函数参数时,形参改变实参也会跟着改变,后面我会讲到
五.return语句
1.return语句之后可以跟一个值,也可以跟一个表达式。
2.return语句执行后,其后代码不再运行。
3.若函数中存在if等分支的语句,则必须保证每种情况都必须有返回值,否则会出现编译错误。
4.若return后面返回的值和函数的返回类型不同,则编译时会将值转换为函数的返回类型。
5.若定义函数返回类型是void时,不需要写return
1.
2.
六.数组做函数参数
举例:写一个函数将一个整型数组的内容全部置为-1,并打印出来
实参:需交代数组名,数组元素个数
形参:需交代数组类型,数组名,数组元素个数
注:1.形参里面的int arr[]我省略了大小,一维数组可以省略[]里面的数字
2.二维数组可以省略行,但不能省略列
3.形参操作的数组和实参是同一个数组
4.二维数组做实参时则不是传递个数,而是需将行和列传给函数
七.函数调用
1.函数名();
2.函数名(参数);
7.1嵌套调用
即在一个函数里调用另一个函数
函数能嵌套调用,但不能嵌套定义
void x()
{
}
void y()
{
x();
}
举例:求某年某月有多少天
图中数组arr[]里面有一个0,为什么?
通过上图可以看出,在最前面加一个数字0可以直接通过月份决定数组的下标,更好理解。你也可以不用加0,修改如下
八.链式访问
即把函数的返回值当做函数的参数
printf的返回值:返回成功读取到的字符个数
上图中首先执行第二个printf,打印出123,其返回值是3,然后传递给第一个printf,打印出3,结合起来打印出1233
九.函数的声明
在调用任何函数之前都要声明
- 函数的定义也是一种特殊的声明,但需要将函数的定义放在调用函数之前
如何声明?
返回类型 函数名(参数)
1. int add(int x,int y);
2. void print();