全局与静态的博弈

2016-05-07  本文已影响46人  FaiChou

内存中的程序

静态变量 & 全局变量

全局变量:代码中的变量,要么定义在函数外,要么定义在函数里。定义在函数外的变量就有了全局的作用域,成了全局变量,全局变量不仅在整个文件中有作用,而且在其他文件中也有作用,称作链接性

a.c

#include <stdio.h>

int a;

int compute(void);

int main()
{ 
  a = 1; 
  printf("%d %d\n", a, compute()); 
  return 0;
}

b.c

int a;
int compute(void)
{ 
  a = 0; 
  return a;
}

在链接过程中会产生重复定义错误,原因是有两个全局变量a,为了避免这种情况,需要引入static

静态变量:指使用 static 关键字修饰的变量,static 关键字对变量的作用域进行了限制,使得变量仅在源文件内有效。

对于static局部变量,在其他文件调用本文件内函数修改其值时候,变量的值不会丢失;普通局部变量都是重新分配,而静态局部变量保持上次调用的值不变。

注意:'静态'这个中文翻译实在是有些莫名其妙,给人的感觉像是不可改变的,而实际上 static 跟不可改变没有关系,不可改变的变量使用 const 关键字修饰,注意不要混淆。

上一篇下一篇

猜你喜欢

热点阅读