存储类型:
有三个地方用于存储变量:普通内存、运行时堆栈、硬件寄存器。
变量的缺省存储类型取决于它的声明位置。1、凡是在任何代码块之外声明的变量总是存储于静态内存中,为静态变量。静态变量在程序运行之前创建,在程序整个执行期间始终存在。2、在代码块内部声明的变量的缺省存储类型是自动的变量,存储于堆栈中。在程序执行到声明自动变量的代码块时,自动变量才创建,程序执行流离开代码块是,自动变量自行销毁。再次执行该代码块时,这些自动变量在堆栈中的内存位置,有可能与原来的相同,也可能不同。当代码块再次执行时,值一般并不是上次执行时的值。3、在代码块内部声明的变量加上static,则转换为静态变量。在整个程序执行过程一直存在,但作用域只在该代码内部。函数的形式参数不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归。4、关键字register声明自动变量,存储于硬件寄存器中。
初始化:
静态变量的初始化:把可执行程序文件想要初始化的值放在当程序执行时变量将会使用的位置。不显示制定初始值,初始化为0。
动态变量的初始化:函数的局部变量在函数的每次调用中可能占据不同的位置。自动变量无缺省的初始值。
声明变量的同时进行初始化和先声明后赋值无效率差别。
static关键字
1.用于函数定义时,或用于代码块之外的变量声明时:static关键字用于修改标示符的链接属性,从external-->internal,标识符的存储类型和作用域不受影响。
2.用于代码块内部的声明:static关键字用于修改变量的存储类型,变为静态变量。在程序执行之前创建。
时间: 2024-12-25 22:18:48