1.函数就是有特定功能的代码段
2.函数的分类:
库函数:
自定义函数:
3.函数的声明、定义和调用
4.函数定义:
(1)返回值类型:函数的结果值类型,函数不能返回数组,指定返回类型是void类型,说明函数没有返回值(注意,返回值不能为数组)
(2)函数名:函数名命名规范和变量名命名规范一样
(3)参数列表:每个形式参数的前面说明其类型,即使几个参数具有相同的数据类型,也必须对每个形式参数分别进行类型说明。形式参数用逗号进行分隔,就算没有参数,函数后面的()也不能省略,可以写成(void)
(4)函数体:函数功能的实现
5.结构
返回值类型 函数名 参数列表{
功能代码;
return 返回值;
}
int a(int b){
return a+b;
}
6.函数的定义分类:注意return后面的代码不被执行
(1)无参无返回值:
//测试无参无返回值可以添加return语句,但是return之后的语句将不再被执行
void sayHello(void){
printf(“Hello”);
}
(2)无参有返回值
//返回值后面的数据,返回给主调函数
//有返回值类型,就一定要有返回值,其(返回值)类型域返回值类型对应
int getCount(void){
return 33;
}
(3)有参无返回值
//如何写参数:类型 + 参数名(形式参数,又叫形参)
//如果参数列表内参数都是同类型,也不能省略数据类型,用逗号隔开。
//函数名:驼峰命名,见名知意。
(4)有参有返回值
//注意事项:以上三个结合
//函数名不能重复定义
7.返回值:
(1)函数执行完毕之后的结果,这个结果通常是一个数值,就是函数的返回值,只能通过return返回给主调函数
(2)函数的返回值只有一个,返回结果用return
(3)函数即使没有返回值,也可以用return来结束函数的执行,返回给主调函数
(4)return后面的语句不再执行
8.函数的声明:就是函数的描述又叫函数原型
9.结构:返回值类型 函数名(参数列表)
注意事项:
(1)如果函数的定义出现在主调函数之后,需要提前进行函数的声明(也就是写在主调函数之前)
(2)如果函数的定义出现在主调函数之前,可以省略函数的声明。
10.函数调用:在主调函数中调用(调用被调函数的函数)即使函数没有参数,但是在调用函数时。一定不能省略”()“
11.不需要写返回值类型,直接写函数名
12.实参可以写常量,也可以写变量,还可以写常量表达式
13.形式参数:出现在函数定义中,用”假名字“来表示被调用时需要提供的”真名字“。也就是用来接收调用函数时传入的参数
14.注意:形参只有在函数被调用时,才会在内存中分配存储单元,用来存储数据,当函数执行完毕后,存储单元将被系统收回。
15.实际参数:用于给函数传值。出现在主调函数调用的表达式。
注意:在调用函数时,实参将赋值给形参,因此,必须注意实参的个数,而实参的类型一定要与形式参数类型一一对应,并且注意,一定要有确定的值。
注意:函数调用中,形参会拷贝实参的内容,传递参数是给函数传递信息的一种形式
17.XXX.h——头文件,函数的声明一般写在头文件里
18.XXX.m——实现文件,函数的定义一般写在实现文件里
19.函数的嵌套调用:C语言中,不允许函数的嵌套定义,但是可以嵌套使用
20.函数的嵌套调用:函数内调用函数
21.如果无返回值类型,默认的返回值则默认为int类型,所以,即使没有返回值,也得将返回值类型写为”void“类型
22.如果返回值与返回值类型不匹配,则定义的返回值类型为准
23.递归函数:
C语言中,允许函数内再次调用函数,称为函数的递归调用。也就是说,函数自己调用自己。
注意:函数的递归调用,一定要有一个出口。因为函数的递归就类似是一个循环,所以一定要有一个出口,否则就是死循环
24.局部变量:函数内部定义的变量,只有当前函数内有效,同样,主函数里的变量,也是如此,一个函数不能使用其他函数内定义的变量。函数执行完毕后的,系统会自动回收局部变量所占的内存。形参也是局部变量。
注意:
(1)不同函数内可以使用相同名字的函数,相互之间不会受到影响,所以他们所分配的内存单元也不相同。
(2)如果一个变量定义在一个分支结构中,这个变量只在当前结构内有效
25.全局变量:在函数外定义的变量,有效范围从定义的全局变量开始到文件的结束。
26.如果全局变量和局域变量名相同时,在局域变量作用范围内,以局部变量为准,全局变量失效。
注意:在开发过程中,除非有特殊需求,否则不要使用全局变量,因为所有函数都可以使用全局变量,我们不确定全局变量对哪个值作出了修改,造成数据问题。
27.从空间角度分为:局部变量和全局变量
28.从生命周期分为:静态存储和动态存储
(1)动态存储方式:比如函数中的局部变量,当函数中的局部变量,当函数执行完毕后,系统会将变量所分配的内存单元立刻收回
(2)静态存储方式:变量存储在静态区,比如全局变量,在程序运行开始,被分配内存单元,直到程序运行结束,才被系统收回
29.static:被它修饰的变量叫做静态变量,比如静态局部变量,静态全局变量。