静态存储类型小结

  • 静态全局变量
    1.在全局变量前面加一个static,使该变量只在这个源文件可用,称之为全局静态变量
    2.静态全局变量对组成该程序的其他源文件是无效的
file1.cpp
static int a=3;
int main()
{
	...
}	
file2.cpp
extern int a;
int func(int n)
{
	...
	a=a*n;
}
  • 静态局部变量只能用于本文件也就是file1,cpp
    -并不是只有用static声明的外部变量才采用静态存储方式,这两种形式的外部变量均采用静态存储方式,只是作用范围不同,都是在编译时分配内存的。

  • 静态局部变量
    1.静态局部变量在静态存储区内分配存储单元,在程序整个运行期间都不释放,而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间,函数调用后即释放掉
    2.对静态局部变量是在编译时赋初值,即只赋初值一次,在程序运行时已有初值,以后每次调用不再重新赋初值而是保留上一次函数调用结束时的值
    3.如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量),但对于自动变量,如果不赋初值,则它的值是一个不确定的值
    4.虽然静态局部变量在函数调用结束时依然存在,但是其他函数不能引用

以下情况需用到局部静态变量

  • 需要保留函数上一次调用结束时的值
  • 初始化后,变量只被引用而不改变其值,这时用局部静态变量以免每次调用时重新赋值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章