C 存储类

变量的“存储类”可确定项是具有“全局”还是“本地”生存期。 C 将这两个生存期称为“静态”和“自动”。 具有全局生存期的项存在且具有贯穿整个程序执行过程的值。 所有函数都具有全局生存期。

每次执行控制权传递到从中定义它们的块时,都会为自动变量或具有本地生存期的变量分配新存储。 当执行返回时,这些变量不再具有有意义的值。

C 提供了以下存储类说明符:

语法

storage-class-specifier
auto

register

static

extern

typedef

__declspec ( extended-decl-modifier-seq ) /* Microsoft 专用 */

__declspec 之外,只能在声明中的 declaration-specifier 中使用一个 storage-class-specifier。 如果没有制定存储类规范,块中的声明将创建自动对象。

使用 auto 或 register 说明符声明的项具有本地生存期。 使用 static 或 extern 说明符声明的项具有全局生存期。

由于 typedef__declspec 与其他四个 storage-class-specifier 终端的语义不同,因此将分开讨论它们。 有关 typedef 的特定信息,请参阅 Typedef 声明。 有关 __declspec 的特定信息,请参阅扩展的存储类特性

源文件中变量和函数声明的位置还会影响存储类和可见性。 所有函数定义之外的声明据说显示在“外部级别”。 函数定义中的声明显示在“内部级别”。

每个存储类说明符的确切含义取决于两个因素:

另请参阅

声明和类型