变量有两种存储方式:静态存储和动态存储。静态存储变量存放于静态存储区,在整个程序运行过程中,始终占用固定的内存空间。全局变量就属于此类存储方式。动态存储变量存放于动态存储区,根据程序的运行状态进行临时分配存储空间,且所占内存位置并不固定。比如,函数的形参,在程序开始执行时并不给形参变量分配存储空间,只有在函数被调用时才为形参变量分配存储空间,当函数调用结束后立即释放形参所占用的空间。若一个函数被多次调用,则会反复地为该形参变量分配、释放存储空间。
由此可见,静态存储方式的变量是一直存在的,而动态存储方式的变量会根据程序运行状态决定存在或消失。这种由于变量存储方式不同而产生的特性称为变量的生存期。它表示了变量存在的时间。变量的生存期和作用域从时间和空间两个不同的角度来描述变量的特性。一个变量究竟属于哪一种存储方式,并不能仅从其作用域来判断,还与变量存储类型有关。
C语言中,变量有4类存储类型:自动变量(auto)、静态变量(static)、外部变量(extern)和寄存器变量(register)。自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式。
变量说明的完整形式如下:
存储类型说明符 数据类型说明符 变量名
例如:
C语言规定,函数内未加存储类型说明的变量均为自动变量,即auto可以省略。自动变量属于动态存储方式,只有在使用它的时候才分配存储空间,函数调用结束后释放存储空间,因此自动变量的值不能保留。若希望函数中的局部变量的值在函数调用结束后继续保留,就要指定该变量为静态局部变量,用static进行声明。(www.xing528.com)
【例6-11】使用静态局部变量求1到10的阶乘值。
例6-11 运行视频
程序运行结果如图6-11所示。
图6-11 例6-11的运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。