static变量:它储存在全局数据区,每次只初始化一次,等程序结束时方才释放内存。
auto变量:则是每次调用一次函数重新对相应的变量初始化一次。
先看static:
#include <stdio.h>
int main()
{
int i,a;
a=2;
for(i=0;i<3;i++)
{
printf("int a变量为 %d \n",a);
a++;
{//注意这里的花括号不可以省略,不然分不清两个a变量
static int a=1;//因为static变量只初始化一次,所以第二次for循环及以后都不执行这一句代码
printf("static int a变量为 %d\n",a);
a++;
}
}
return 0;
}
运行结果如下:
auto:
#include <stdio.h>
int main()
{
int i,a;
a=2;
for(i=0;i<3;i++)
{
printf("int a变量为:%d\n",a);
a++;
{
auto int a=1;
printf("auto int a变量为:%d\n",a);
//auto变量则是每次调用一次函数重新对相应的变量初始化一次,所以每次调用函数之后输出的值都一样。
a++;
}
}
return 0;
}
运行结果: