函数部分
1、函数是程序的基本组成单位,其中主函数在每一个程序有且只有一个,并且程序必须从主函数开始执行。
有参函数
参数
无参函数
2、函数 有返回值函数
返回值
无返回值函数
3、函数的定义
函数返回值类型 函数名(类型 形参1,类型 形参2) ——>首部定义
{
声明部分; ——>函数体
执行部分;
}
4、若省略函数返回值类型,则默认为整型
5、若函数有返回值,则必须通过return返回,并且return语句一旦执行,其后面语句不再执行
6、return的格式
(1)return 表达式;
(2)return (表达式);
7、若函数的返回类型与return的返回类型不一致,则以定义时为标准
Eg:(1)int fun()
{
float a = 2.6 ;
return a;
}
则a = 2
(2)float fun()
{
int a = 7 ;
return a;
}
则a = 7.0
8、若函数无返回值,则将其类型定义为空类型,即void。并且函数体中不再出现return语句
Eg:void fun()
{
int a = 2;
a = a+1;
return a; //此处错误
}
9、函数的调用
函数名 (实参1,实参2)
10、常见的函数调用
(1)通过语句调用:fun (x ,y )
(2)通过表达式调用:sum = fun (x , y)
(3)通过参数调用:fun(x ,fun (m,n))
(4)通过递归调用
11、调用执行流程
在程序中,看到函数的调用语句,则转去执行被调用的函数,若有参数,应进行参数间传递,即把实参的值传递给对应的形参,函数执行完毕,返回函数调用处
12、调用原则
调用
(1)主函数 子函数 (主能调用子,子不能调用主)
主函数由系统提供,只能由系统调用
调用
(2)子函数 子函数 (子函数间可相互调用)
13、函数可以嵌套调用,但不能嵌套定义
14、若函数的定义出现在函数调用之后,则在调用前加上函数的声明语句
声明语句 = 首部定义+分号
在单向值传递中,形参的改变对实参没有影响
递归调用:函数自身调用自身叫做函数的递归调用
(1)形式
直接递归:fun ——> fun
间接递归: fun ——> fun c ——> fun
(2)步骤
递:递推——>向外展开
归:回归——>向内返回
变量的作用域和存储域
变量的存储域
(1)静态变量:static eg:static int a;
(2)动态变量:auto eg:auto int a;
注:定义动态变量时,auto可以省略不写
静态与动态的区别:
Eg:int a; static int a;
Printf(“%d\n”,a); Printf(“%d\n”,a);
输出随机值 输出0
注:动态变量未赋初值,默认为随机值
静态变量未赋初值,默认为0
在调用函数时,动态变量的初始化每次都要执行,而静态变量的初始化只在第一次执行,以后不再执行
变量的作用域
(1)全局变量:在函数之外定义的变量,他的有效范围从定义的位置开始,到整个程序结束
(2)局部变量
在函数体内部或复合语句体内定义的变量,他只在该函数或该复合体内有效