运行时当局部变量出了作用域时,被销毁,所以当while循环到调用函数test时,变量a的初始值仍为0.
#include<stdio.h>
void test()
{
int a=0;
a++;
printf("%d ",a);
}
int main()
{
int i=0;
while(i<10)
{
i++;
test();
}
return 0;
}
static 修饰局部变量的时候,改变了变量的储存位置 ,所以当局部变量出了作用域时,就不会被销毁.
#include<stdio.h>
void test()
{
static int a=0;
a++;
printf("%d ",a);
}
int main()
{
int i=0,p=0;
while(i<10)
{
i++;
test();
}
return 0;
}