存储类

C Primer Plus 第12章 存储类、链接和内存管理

懵懂的女人 提交于 2019-12-03 21:40:30
12.1 存储类 C为变量提供了5种不同的存储模型,或称为存储类。还有基于指针的第6种存储模型,本章稍后(“分配内存malloc()和free()”小节)将会提到。可以按照一个变量(更一般地,一个数据对象)的存储时期来描述它,也可以按照它的作用域(SCOPE)以及它的链接(linkage)来描述它。存储时期就是变量在内存中保留的时间,变量的作用域和链接一起表明程序的哪些部分可以通过变量名来使用该变量。不同的存储类提供了变量的作用域、链接以及存储时期的不同组合。 您可以拥有供多个不同的源代码文件共享的变量、某个特定文件中所有函数都可以使用的变量、只有在某个特定函数中才可以使用的变量、甚至只有某个函数的一小部分内可以使用的变量。 您可以拥有在整个程序运行期间都存在的变量,或者只有在包含该变量的函数执行时才存在的变量。您也可以使用函数调用 为数据的存储显示的分配和释放内存。 12.1.1 作用域 作用域描述了程序中可以访问一个标识符的一个或多个区域。 一个C变量的作用域可以是 代码块作用域、函数原型作用域,或者文件作用域 。 到目前为止的程序实例中使用的都是代码块作用域变量。 在代码块中定义的变量具有代码块作用域(block scope),从该变量被定义的地方到包含该定义的代码块的末尾该变量均可见。 另外, 函数的形式参量尽管在函数的开始花括号前进行定义,同样也具有代码块作用域