可以根据一个变量的存储类、作用域、链接属性、生命周期来描述该变量。
其中,存储类决定了生命周期,作用域决定了链接属性。
存储类
存储类表明变量在哪里存储。见博文Linux下C语言程序的内存布局_天糊土的博客-CSDN博客
作用域
作用域表明变量起作用的范围。包括:
(1)代码块作用域,即花括号之内的一段代码。
(2)函数原型作用域。
(3)文件作用域,即在所有函数之外定义的变量,从它定义到该文件结尾处都是可见的,也叫全局变量。
链接属性
链接属性,是指多个文件之间是否共享变量。
链接属性,包括空链接、外部链接、内部链接。
空连接表示只允许变量所在的函数原型或者代码块使用。
文件作用域的变量可能具有外部链接或者内部链接,具有外部链接的变量可以在一个多文件程序的任何地方使用(用extern修饰),具有内部链接的变量可以在一个文件的任何地方使用(用static修饰)。
生命周期
生命周期表明什么时候为变量分配与收回内存。
生命周期包括静态存储时期、自动存储时期:
静态存储时期,表示该变量在程序执行期间一直存在。
自动存储时期,表示在程序进入定义这些变量的代码块时,才会为这些变量分配内存,退出该代码块时,分配的内存将被释放;