c中static的几种用法

在c语言中static算是一个用法比较多的重点了,今天我也在这里谈一谈目前我所知道的几种内容,在以后要是发现其他用法将及时增加。
1.修饰变量(这里的变量可以是局部变量,也可以是全局变量)

  • 修饰一个变量也就注定了这个变量的可见范围和生命周期,当修饰的变量是全局变量的时候,
  • 用static修饰的全局变量只能在本文件中查看,其他文件不能使用。但是没用修饰的全局变量,在其他文件也可以通过extern来使用。当一个全局变量被声明为static之后,他就叫做静态全局变量。
  • 修饰一个局部变量,如下这段代码
void fun ()
{
static int a=1;
int b=1;
a++;
b++;
}
  • 当执行完这段代码的时候,a=2,b=2,当程序入如果再次进入这段代码的时候就不会再去跑static这行代码,函数中a为静态局部变量,存储在全局数据区,b为局部变量,存放在静态存储区,存储在栈上面,随着函数退出b的生命周期也就结束,但是a依然有效,但是作用范围还是在本函数内部,当下次再次进入此函数时,将直接拿上次一a的结果进行++,而直接跳过,static环节。
  • static局部变量初次定义的时候就必须初始化,要是不初始化,那么编译器就会自动默认为0,static在修饰局部变量的记忆性和生存期的全局性。

猜你喜欢

转载自blog.csdn.net/weixin_43767691/article/details/88901681