全局变量(Global Variables)是指程序中任意地方都能访问的变量。有时,那些作用域比局部变量(local variables)更广的变量也可比作是全局变量:例如类中可以任意访问的变量。
有经验的程序员会尽可能避免使用全局变量。为何不建议使用全局变量?基于代码大全中的“13.3全局数据”和网上的一些相关资料,这里做一些简单的整理和小结。
常见的与全局变量有关的问题
- 无意间的修改
- 命名冲突
- 奇异的别名(Aliasing)
- 并发(Concurrency)的问题
- 初始化的顺序
- 阻碍了代码的复用
- 干扰了模块化
无意间修改了全局变量
个人比较喜欢的说法是,你不知道全局变量什么时候被修改了。其产生的后果有:
- 难以理解
- 产生歧义
- 破坏了代码封装
- 难以测试
int global_variable = 0;
int main() {
global_variable = 1;
int increased = inc_global_variable(5);
int sum = global_variable + increased;
printf("Sum is : %d n", sum);
return 0;
}
乍一看认为sum的值应该是6,但结果是12,因为函数inc_global_variable中修改了global_variable的