一.函数
用于封装简化有规律或重复性代码,提高代码复用性
划分模块,提高可读性
1.函数的定义
返回值类型 函数名(形参列表) //函数首部
{ //函数体
}
返回值类型:返回值是函数执行结束返回给调用者的结果
函数名:是一种标识符
形参列表:函数执行所需要的一些必要信息
函数体:实现功能的逻辑代码
当函数返回值类型为非void时,必须写return,若为void时,也最好写return;
当函数值类型不写时,默认为int型
2.函数的调用
函数名(实参列表)
函数调用时,出现形参与实参数据类型不一致时,实参向形参进行隐式转换
3.函数的声明
函数首部+‘;’
定义与声明:
定义会包含声明
定义一般会开辟空间,但声明不会
声明可以多次,但定义只有一次
函数调用前,一定需要函数声明
4.变量的存储类型
auto(自动变量):
默认,存放在系统栈空间,即为局部变量
register(建议性 寄存器变量):
用于将数据变量存放在寄存器中
static(静态变量):
修饰局部变量:
使生命周期延长,但只有局部变量的作用域,保存在数据区
修饰全局变量:
生命周期不变,但作用域限制在本文件
修饰函数
限制作用域在本文件
extern(外部变量)
修饰全局变量,声明此变量的定义在外部文件
修饰函数,声明此函数的定义在外部文件
5.作用域(变量所能使用的范围)
局部变量:
局部变量作用域在 从定义开始到距离最近的{}内部
作用域重叠时,最近的变量作用域会屏蔽较远的
全局变量:
作用域在 从定义开始到整体结束
函数:
作用域在 从定义开始到整体结束
如果调用不在作用域会产生隐式声明
6.生命周期(从开辟空间到回收空间的过程)
局部变量:
从程序执行到定义时开辟空间,到离开作用域被回收空间
全局变量:
从编译阶段开辟空间,到整个程序结束回收空间
7.函数传参
值传递:
实参将值拷贝给形参,两者仅存在拷贝关系,内存空间相互独立
全局传参:
利用全局变量的全局作用域,在两个函数间实现信息传递
数组传参:
数组作为函数参数传递的时候会传递地址编号
补充:
extern关键字使用时,在编译阶段,需要gcc 加多个.c文件同时编译,否则编译器会提示未定义引用