有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,这时就应该指定局部变量为静态局部变量,用关键字static进行声明。
通过用static类型声明后的变量,其变量的内存空间位于内存的全局静态区,仅会初始化一次,这是一个非常重要的特性,请大家通过如下的程序理解:
#include
static a=5;
int fun()
{
a=a*2;
printf("a=%d\n",a);
return 0;
}
int main()
{
int i=0;
for(i=0;i<10;i++)
{
fun();
}
return 0;
}
请大家先自行理解,然后上机运行如上代码,可以观察a的值输出如下:
a=10
a=20
a=40
a=80
a=160
a=320
a=640
a=1280
a=2560
a=5120
这个结果的原因在于,每次a的值是接着上一次函数调用的值继续运算的,并非每次都初始化从5开始计算,这就是static的特性,请大家好好理解。