C语言中变量的存储类型

来源:互联网 发布:crm系统导出数据 编辑:程序博客网 时间:2024/04/29 03:17


存储类型:

变量的存储类型是指存储变量值的内存类型。变量的存储类型决定变量何时创建、何时销毁以及它的值将保持多久。有三个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。

变量的缺省存储类型取决于它的声明位置。

凡是在任何代码块之外声明的变量总是存储在静态内存中,也就是不属于堆栈的内存,这类变量称为静态(static)变量 。对于这类变量,你无法为他们制定其他的存储类型。静态变量在程序运行之前创建,在程序的整个执行期间始终存在,它始终保持原先的值。

在代码块内部声明的变量的缺省类型是自动的,也就是说它存储在堆栈中,成为自动(auto)变量。在程序执行到声明自动变量的代码块时,自动变量才被创建,当程序的执行流离开该代码块时,这些变量便自行销毁。如果该代码块被数次执行,例如一个函数被反复调用,这些自动变量每次都将重新创建。因此,我们可以说自动变量在代码块执行完毕后消失。

对于在代码块内部声明的变量,如果给它加上关键字static,可以使它的存储类型从自动变为静态。具有静态存储类型的变量在整个程序执行过程中一直存在,而不仅仅在声明它的代码块的执行时存在。注意,修改变量的存储类型并不表示修改变量的作用域,他依然只能在该代码块内部按名字访问,函数的形式参数不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归。

1 0