- 在本地变量定义时, 加上
static
修饰符就成为静态本地变量 - 当函数离开的时候, 静态本地变量会继续存在并保持其值
- 静态本地变量的初始化只会在第一次进入这个函数时做, 以后进入函数时会保持上次离开的值
void f(void){
static int a=0;
printf(" in %s a=%d\n", __func__, a);
a++;
printf("agn in %s a=%d\n", __func__, a);
}
int main(){
f();f();f();
return 0;
}
/* in f a=0
agn in f a=1
in f a=1
agn in f a=2
in f a=2
agn in f a=3 */
- 静态本地变量实际上是特殊的全局变量
- 他们位于相同的内存区域
- 静态本地变量具有全局的生存期,函数内的局部作用域
static
在这里的意思是局部作用域static
出现在这个函数里, 他就给了这里的局部作用域?