(一)在C语言中
静态变量永远只能初始化一次(运行时),但是可以多次赋值,
静态变量的内存地址在编译后就确定了。
(1)局部静态变量,存在于全局数据区
example1:
#include <stdio.h>
int function()
{
static int a = 10;
<span style="white-space:pre"> </span>a++;
return a;
}
int main()
{
for(int nIndex = 0;nIndex<10;nIndex++)
{
printf("a = %d\n",function());
}
}
输出结果为11,12,13,14,15,16,17,18,19,20
红色为定义,只定义一次。实现机制:为a记录一个是否初始化的状态,看看汇编就知道了。
example2: