我试图完全理解静态变量在 C 中是如何工作的。我知道使用 static 关键字使变量的生命周期等于程序的持续时间。下面的例子有一件事让我感到困惑......
我的static_test.c文件:
#include <stdio.h>
void foo(){
static int counter = 0;
counter++;
printf("This function has been called %i times.\n",counter);
return;
}
int main(){
int i;
for(i=0;i<10;i++){
foo();
}
return 0;
}
当我第一次阅读这个示例时,我想知道为什么函数每次都不会打印出 0,因为我们将 0 分配给静态变量。
这是因为一旦声明了静态变量,编译器会在下次调用我的foo()
函数时忽略同一变量的另一个声明?
谢谢!