C语言 day4
函数
1、 函数的形参 本质 是函数的局部变量
2、 形参在函数定义的时候不会开辟空间,只在函数调用的时候才开辟空间
3、 形参在函数结束的时候才会变量
4、 函数名代表的是函数的入口地址
5、 函数的返回值 <=4字节 存放在寄存器 | >4字节放在栈区
内存的分区
变量的存储类别
1、 普通局部变量
定义形式:在{}里面定义的普通变量
作用范围:离它最近的{}的范围内有效
生命周期:离开{}的局部变量 系统回收
存储区域:栈区
注意事项:
a、普通局部变量不初始化 内容不确定(只要是在栈区的都是不确定的)
b、普通局部变量同名的话 就近原则
1 |
|
运行结果:A:data=200 b:data=100
B执行的时候,data=200已经释放了
2、 静态局部变量
定义形式:在{}中定义 前面必须要加static
修饰
作用范围:离他最近的{}之间有效
生命周期:整个进程都有效(范围小 活得久)
1 |
|
可以用来统计函数调用的次数
存储区域:全局区(这就是上面的原因)
注意事项:
a、 静态局部变量 不初始化内容为0(全局区)
b、 只能被定义一次
3、 普通全局变量
定义形式:在函数外面定义的
作用范围:
a、 当前源文件都有效,在定义之前使用需要进行声明 (声明的时候尽量推荐加上extern
可以不加。不然容易当成是变量的定义)
b、其他源文件都有效 在其他源文件使用全局变量是 必须加上extern
生命周期:整个进程都有效 (程序结束的时候 才被释放)
存储区域:全局区
注意事项:
a、全局变量不初始化,内容为零(全局变量会被放到bss区,bss区会自动补0)
b、如果全局变量 要在其他源文件里使用 必须要加extern声明
c、如果全局变量与局部变量同名 在{}中优先使用全局变量
4、 静态全局变量
定义形式:在函数外面定义 同时加static
修饰
作用范围:只能在当前源文件里使用(多人开发 防止重名)
生命周期:整个进程
存储区域:全局区
注意事项:
a、静态全局变量不初始化 内容为0
b、静态全局变量 只在当前源文件内有效
全局函数(普通函数)和静态函数(局部函数)
1. 全局函数(普通函数)
特点:可以在其他源文件中使用 必须加extern声明
2. 静态函数(局部函数)
定义的时候加了static
特点:只能在当前源文件里使用 不能在其他源文件中使用
非得使用也可以,需要将静态函数封装在全局函数中,同时全局函数和静态函数必须是在同一个源文件
练习:写出运行结果。