static的深入了解

static:在C语言中:
static是用来修饰变量和函数的
1. 修饰局部变量-称为静态局部变量
2. 修饰全局变量-称为静态全局变量
3. 修饰函数-称为静态函数

1:static修饰局部变量时,局部变量的生命周期会变长,变量存放的位置也从栈区变成了静态区;比如一个变量放在一个循环中时,它的生命周期或者说作用域只能在循环中使用,出了循环就销毁了。如果出循环时,该变量发生了值的变化,但是下一次进入循环还是初始值;但是用static修饰时,下一次进入循环时会将上一次变化了的值进入循环,不会再初始化。

//代码2
#include <stdio.h>
void test()
{
  //static修饰局部变量
  static int i = 0;
  i++;
  printf("%d ", i);
}
int main()
{

int i = 0;
  for(i=0; i<10; i++)
 {
    test();
 }
  return 0;

上面的代码就是这样的,没有static修饰打印的是10个2;有的话就是2到11;

2:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。

 上面函数是可以正常使用的,但是用static修饰的话就不能再另外一个源文件中正常使用函数了。

 一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。和全局变量一样的道理;

 


版权声明:本文为qq_68844357原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。