C语言中的变量存储类型

变量的存储类型决定了变量何时创建、何时销毁以及保持多久。
有3个地方可以用于存储变量,普通内存、运行时堆栈、硬件寄存器,在这三个地方存储的变量具有不同的特性。

变量的存储类型一般有3种:auto、static、register。

变量的缺省存储类型取决于它的声明位置。
在代码块内部声明的变量的缺省类型是auto,它存储于堆栈中,为自动变量(auto),在执行该代码块时自动创建,离开该代码块时自动销毁,这些自动变量每次执行时在堆栈中占用的内存位置不一定和之前相同。
在代码块外部声明的变量存储于静态内存中,为静态变量(static),在程序执行之前创建,在程序的整个执行期间始终存在,它始终保持原先的值,除非给它赋值一个不同的值或程序结束。

在代码块内部声明的变量,加上static声明,该变量为静态变量(static),具有静态存储类型的变量在整个程序执行过程中一直存在。

关键词register可以用于自动变量的声明,提示该变量存储于机器中的硬件寄存器而不是内存中,通常寄存器变量比存储在内存的变量访问起来效率更高,寄存器变量的创建、销毁和自动变量一样。

image

针对static的特殊用法说明,static用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性(从external改为internal),但标识符的存储类型和作用域不受影响。用这种方式声明的函数或者变量只能在声明他们的源文件种使用。

简单理解就是:static声明的函数和变量仅能在本文件种使用,外部函数无法访问。

posted @ 2026-04-07 15:41  来碗回锅肉盖饭  阅读(17)  评论(0)    收藏  举报