1.可以延长局部变量的生命周期
eg.
原本局部变的生命周期是从进入函数体开始,到出函数体结束,但加上关键字static关键字后就会一直存在
#include <stdio.h>
int sum(int a,int b)
{ static int c;
c=a+b;
c++;
printf("\n",c);
return c;
}
int main(){
int a,b;
scanf("%d %d",&a,&b);
int result=sum(a,b);
printf("%d",result);
return 0;
}
重复运行代码,变量c的值会承接上一次运行的结果
2.让变量从栈内存移动到静态内存
3.改变了全局变量的外部链接属性
正常的全局变量可以在整个源文件使用,只需要用extern + 数据类型+变量名称就可以
代码如下
在同一个头文件的一个源文件中声明全局变量
#include <stdio.h>
int p_year=2024;

在另一个源文件中调用
#include <stdio.h>
extern int p_year;
int main(){
printf("%d",p_year);
return 0;
}

运行结果是这个样的

但是加上static关键字后


运行结果会报错
这就是改变全局变量的外部链接属性。
4.同样也可以修饰函数,让函数不能在外部被调用。
方法同上;
2158

被折叠的 条评论
为什么被折叠?



