对局部变量加上static的作用:
- 延长局部变量的生命周期,将变量提升到全局变量,但是它并没有改变变量的作用域
- 会进行默认类型初始化
对于全局变量加上static的作用:
- 共有变量转换为当前文件私有变量
- 会进行默认类型初始化
static int num ;
static double d ;
int main()
{
printf("%d\n",num);//0
printf("%f\n",d );//0.000000
return 0;
}
如果想让某个全局变量只在某个文件中使用, 并且不和其他文件中同名全局变量共享同一块存储空间, 那么就可以使用static
我们先看看不加static效果是啥
那么我们加static效果是啥
可以实现变量在函数内一次声明,多个此调用共享变量
void test(){
static int num = 0; // 局部变量
num++;
// 如果不加static输出 1 1 1
// 如果添加static输出 1 2 3
printf("num = %i\n", num);
}
int main()
{
test();
test();
test();
return 0;
}
运行可以发现,如果在函数内部变量上添加static后,之后在第一次调用的时候初始化变量,之后函数在调用的时候会复用变量之前的结果,并且变量只是作用于函数范围