立即学习:https://edu.youkuaiyun.com/course/play/8088/174675?utm_source=blogtoedu
1. 变量的存储类别
静态存储变量:在程序运行期间分配固定存储空间的变量
存储全局变量等
动态存储变量:在程序运行期间根据需要进行动态分配存储空间的变量
存储函数形参、局部变量、函数调用时现场的一些数据和返回的地址等
2. 局部变量的存储方式
(1)传统情形:函数调用时分配存储空间,函数执行完成后释放内存
(2)特殊情形:静态局部表变量:用static加以说明(能够保留原值,占用的存储单元不释放。在下一次调用该函数时,该变量的值就是上一次调用结束时的值)
局部静态变量说明:
(1)在静态存储区分配内存单元,程序整个运行期间不释放
(2)局部静态变量是在编译时赋予初值,只赋初值一次,在程序运行的时候,就已经有了初值,以后调用函数时不再进行赋值,而是保留上次调用结束时的值
(3)定义局部静态变量时,如果不赋初值,则系统自动赋值0
(4)虽然局部静态变量在函数调用结束后结果仍然存在,但其它函数不能引用它
(5)缺点:长期占用内存,降低了程序可读性;除非必要,尽量不使用
3. 全局变量跨文件引用
在引用该全局变量的文件中的头部做一个“外部变量说明”(使用extern),必须放在文件最开头,所有函数之前
在定义全局变量时前面增加static,则该全局变量只能在本文件中使用,其他文件不能引用
4. 函数的跨文件调用
根据函数能否被其他源文件调用,分为内部函数以及外部函数
内部函数:又称静态函数只能被本文件调用,定义时在最前边加一个static,形式如下:
static 类型标识符 函数名(形参表){...}
外部函数:不使用static定义,默认前面加了extern
调用其他文件的函数之前需要在本文件的开头声明该函数
5.static关键字用法总结
(1)在函数内部定义一个变量时使用static,该变量会存储在静态存储区,编译时进行初始化,若不赋初值,则自动初始化为0,以后调用该函数时该变量为上次调用结束后该变量的值
(2)在全局变量之前增加static,则该全局变量只能在本文件中引用
(3)在函数定义之前加static,则该函数只能在本文件中被调用