• 在本地变量定义时, 加上 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 出现在这个函数里, 他就给了这里的局部作用域?