C Primer Plus 第12章 12.9 总结
用于存储程序数据的内存可用 存储时期、作用域和链接 来表征。 存储时期可以是静态的、自动的或者分配的。 如果是静态的,内存在程序开始执行时被分配,并在程序运行时一直存在。如果是自动的,变量所用的内存在程序执行到该 变量定义所在的代码块时开始分配 ,在退出代码块时释放。如果是分配 的内存,内存通过调用malloc()分配,通过调用函数free()释放。 作用域决定了哪一部分程序可以访问某个数据 。在所有函数之外定义的变量具有文件作用域,并对该变量声明之后定义的全部函数可见。在代码块内定义或者作为函数参量定义的变量具有代码块作用域,并只在该代码块及其子代码块中可见。 链接描述了程序的某个单元定义的变量可被链接到其他哪些地方。 具有代码块作用域的变量作为局部变量,具有空链接。具有文件作用域的变量可有内部链接或外部链接。内部链接意味着变量只可在包含变量定义的文件内部使用。外部链接意味着变量也可以在其他文件中使用。 下面是C的一种存储类: C的5种存储类 自动 在一个代码块内(或一个函数头部作为参量)声明的变量,无论有没有存储类修饰符auto,都属于自动存储类。该类具有自动存储时期、代码块作用域和空链接。如未经初始化,它的值是不定的。 寄存器 在一个代码块内(或一个函数头部作为参量)使用存储类修饰符register声明的变量属于寄存器存储类。该 类具有自动存储时期、代码块作用域和空链接