static 是静态的意思,可以用来:修饰局部变量,修饰全局变量、修饰函数
一、static修饰局部变量
void test() {
static int a = 1;
a++;
printf("%d\n", a);
}
int main() {
for (int i = 0; i < 5; i++)
{
test();
}
return 0;
}
static修饰的变量被放在了静态区,与全局变量的生命周期一致,但作用域不变
二、static修饰全局变量
1.首先要知道全局变量有外部链接属性,即其他.c文件可以访问,下面举例:extern声明外部变量
首先在一个源文件里定义一个全局变量G_val
int G_val = 2029;
再在另一个源文件里打印,此时不会报错(G_val未声明的错误)
extern int G_val;//声明外部变量
int main() {
printf("%d", G_val);
return 0;
}
2.给全局变量加上static后,把该全局变量的外部链接属性改为了内部链接属性,只能在本.c文件使用,缩小了作用域
三、static修饰函数
函数默认有外部链接属性
与static修饰全局变量同理