1、变量:
内存中分配的一块存储区域;
2、变量分类:
(1)auto局部变量
存储空间:栈
作用范围:函数体内
生命周期:函数体执行期间
(2)static 静态局部变量
存储空间:静态存储区
作用范围:函数体内
生命周期:第一次被初始化(只初始化一次),到整个程序执行结束一直存在
(3)全局变量
存储空间:静态存储区
作用范围:在一个源文件中定义,就可以作用于所有的源文件(不包含全局变量定义的源文件需使用extern 关 键字再次声明这个全局变量)
生命周期:程序的整个生命周期
(4)static全局变量
存储空间:静态存储区
作用范围:只作用于定义它的源文件
生命周期:程序执行期间
3、注意问题:
(1)静态全局变量和全局变量:
相同点:存储方式相同,都为静态存储方式;
不同点:非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个 源文件中都有效;静态全局变量只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使 用。
(2)静态局部变量和局部变量:
相同点:作用范围都在函数体内;
不同点:静态局部变量只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在;
局部变量在函数执行期间存在,函数一次调用结束后,变量被撤销,内存被收回;