二、C语言
2.5函数
1.功能
能够避免重复性代码
可以让程序模块化
2.函数三种形式
(1)函数定义
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...)
{
函数体;
return 返回值;
}
函数名:与变量名要求保持一致
形参:形式参数,用来展示函数对数据的处理的方式
函数类型:函数运行结果的类型
函数类型如果不写默认为int类型
返回值:函数的运行结果
返回值类型与函数类型不一致时,以函数类型为准
(2)函数的调用
函数名(实参1, 实参2, ...);
调用:可以通过函数名加实参使用函数
主调函数:主动调用函数的函数
被调函数:被别人调用的函数
传参:主调函数调用被调函数,会将实参的值传递给形参
实参个数与形参个数必须一一对应
如果实参与形参类型不匹配,则将实参类型强制类型转换为形参类型再传参
函数调用结果类型为函数类型
函数调用结果的值为函数的返回值
(3)函数的声明
如果被调函数在主调函数下方定义,需要在主调函数上方声明被调函数
如果被调函数在主调函数上方定义,不需要声明被调函数
(4)变量的作用域和生存周期
1. 变量的作用域
局部变量:变量作用域在定义该变量最近的大括号内
全局变量:变量的作用域在本文件中均可使用
2. 变量的生存周期
变量从被开辟空间到空间被回收的整个过程称为生存周期
(5)变量的存储类型
1.变量的定义
存储类型 数据类型 变量名;
2.存储类型
(1)自动型存储、局部变量(默认):auto
将变量存放在栈区
局部变量未经初始化为随机值
执行到变量定义时为变量开辟空间
执行到超过变量作用域范围被回收
2. 寄存器存储:register
将变量存放在CPU内部的寄存器中,如果寄存器存满了等价于auto类型
3.外部声明:extern
声明变量或者函数是外部存储
4.静态存储:static
将变量存放在静态区中
未经初始化时为0值
编译代码时为变量分配空间,执行时加载到数据区中
程序结束回收空间
限定变量/函数作用域只能在本文件中使用
防止多文件编程时变量名或函数名冲突
(6)函数传参
1. 值传递
实参将值传递给形参,形参拿到实参的值实现后续的操作