函数
一 函数的定义
1.函数:能完成特定功能的代码段.
2.使用函数的好处:简化代码,避免重复代码,提高开发效率,集中控制,保证安全.
3.函数从定义的角度讲可分为:库函数和自定义函数.库函数是系统提供的函数,能够直接使用的函数.自定义函数:是开发人员根据自己的需求自定义的函数,为完成某些特殊的功能.
4.定义函数
返回值类型 函数名 (数据类型 参数1,数据类型 参数2......){函数体;}
void 表示返回值为空,表示没有返回值
5.函数类型可以分为四类:
1⃣️无返回值无参数;
2⃣️无返回值有参数;
3⃣️有返回值无参数;
4⃣️有返回值有参数;
二函数的调用
1.函数 A 调用函数 B,A 叫主调函数, B 叫被调函数.
2.函数调用:函数名(参数);调用无返回值,无参数的函数直接使用:函数名();
调用有返回值的函数时,需要定义一个跟返回值相同类型的变量,用来接收函数返回的值;
3.形参(形式参数) 出现在函数定义中,以假名字来表示函数调用时需要提供的值.
实参(实际参数) 出现在函数调用中的表达式
注意:函数调用中,形参会拷贝实参内容,传递参数是给函数传送信息的一种方法.
形参可以有多个,实参的个数必须跟形参的个数一样,实参的类型也要跟形参的类型一致
练习:
编写函数,返回 三个整数的中间数.
三 函数的声明
严格的函数通常包括三部分:
函数的声明,函数的定义,函数的调用
函数的声明:指的是函数的描述,也叫函数原型(告诉下面的函数,我有这个函数,你可以使用)
函数声明:
1.函数定义出现在主调函数之前,可以省略函数声明.
2.函数定义出现在主调函数之后,需要提前声明函数.
函数声明尽管可以省略,从规范来讲,不要省略.
函数的声明一般写在头文件中,***. h 开头的文件.
函数的实现文件******. m 文件中,函数定义一般写在实现文件里.
系统定义的头文件里使用尖括号<> 用户自定义的头文件使用 “”
四函数的嵌套
就是在函数定义的时候,可以调用已经定义过的函数,可以简化代码.
五 函数的递归调用
递归函数就是自己调用自己,非常吃内存,不建议使用.
注意:递归函数一定要有出口.
主要的练习是:阶乘的递归:5!
int fact(int n){
if(n > 2){
return n * fact(n -1);
}
else {return n;}
}
六 变量作用域
全局变量:定义在函数外的变量叫全局变量.
局部变量:定义在函数内部,有效范围从定义开始,一直到函数结束
尽量不要使用全局变量,很危险.
结构体
一 结构体的定义
1.结构体:结构体是用户自定义的数据类型
2.如何定义一个结构体类型?
struct 结构体名{
成员变量类型1 成员变量名1;
成员变量类型2 成员变量名2;
….