static修饰局部变量时,局部变量出了作用域,不销毁。
本质上,static修饰局部变量的时候,改变了变量的存储位置,影响了变量的生命周期,生命周期变长,和程序的生命周期一样。
如果不使用static的话,代码如下:
#include <stdio.h>
void test() {
int a = 0;
a++;
printf("%d ", a);
}
int main() {
int i = 0;
while (i < 10) {
test();
i++;
}
return 0;
}
结果如下:
很明显会发现输出了10个1,每次运行完变量a会自行销毁。
如果加上static,代码如下:
#include <stdio.h>
void test() {
static int a = 0;
a++;
printf("%d ", a);
}
int main() {
int i = 0;
while (i < 10) {
test();
i++;
}
return 0;
}
结果如下:
很明显的发现结果输出不是10个1了,这说明加了static后创建的变量a运行一次后没有被销毁。