static关键字在C语言中的作用

static关键字在C语言中的作用简述

—static关键字作为比较常见并且比较重要的一种关键字,在程序模块化中有很大的作用,在C语言中的作用主要分为:

变量

(1).在修饰局部变量的时候:
a. static修饰的局部变量生命周期变成全局属性,相当于改变了局部变量的生命周期,不改变作用域(本代码块)。
b.被static修饰的变量定义即使不赋值也会把它初始化为0值。只在第一次调用时进行初始化。
c. 储存位置不会储存在栈上,放在数据段

(2).在修饰全局变量的时候:
a.改变该变量的链接属性,让该变量只能在该文件中访问,相当于改变了作用域。其他文件可以定义和被修饰的变量相同的类型名,不相互冲突。

函数

修饰局部变量和函数在很多地方是一样的。
(3).在修饰函数的时候:
a.改变函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用,不能被其他文件使用。
b. 后续调用时,该变量使用前一次函数调用完成之后保存的值。

其他注意事项:
static修饰的变量是可以改变值的,它并没有限制变量的取值,只是在作用域或者是生命周期进行了改变。const修饰的变量不能被改变其值。

用以下简单的样例来说明一下static的作用:
1.函数

void Abc(){
    
    //定义一个自定义函数用来做样例
int i=0;  //循环一次就会初始化一次,所以会一直打印初始化后i++的值,也就是1
i++;
printf("i= %d\n",i);
}
int main(){
    
    
for(int i=0;i<10;i++){
    
    
Abc();
}
return 0;
}

结果如下:

在这里插入图片描述

void Abc(){
    
    
  static int i=0;//使用static修饰变量,使得初始化只进行一次
i++;
printf("i= %d\n",i);
}
int main(){
    
    
for(int i=0;i<10;i++){
    
    
Abc();
}
return 0;
}

结果如下:
在这里插入图片描述
2.作用在全局变量的情况,第一种可以调用;
第二种加了static不能调用
第一种:
在这里插入图片描述
在这里插入图片描述
第二种
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhaocx111222333/article/details/109158938