函数中static关键字修饰的变量保存在静态区中,被调用函数销毁该变量的空间依然保留。下面通过具体实例看有无static关键字的区别
案例比较:
1.未加static
#include<stdio>
void inc();
int main()
{
inc();
inc();
inc();
return 0;
}
void inc()
{
int num=1;
printf("%d ",num);
num++;
}
运行结果:
1 1 1
2.加static
#include<stdio>
void inc();
int main()
{
inc();
inc();
inc();
return 0;
}
void inc()
{
static int num=1;
printf("%d ",num);
num++;
}
运行结果:
1 2 3
简要分析:
区别: 无static关键字时,每调用一次inc()函数时,都重新为num分配了内存空间,所以每一次调用num的初始值为1
有static关键字时,第一次调用inc()函数后,分配了静态的内存空间,之后再调用inc()也使用相同的空间,所以前一次的num++对后面是有效的
注意:inc函数中的静态函数也不能被main函数访问