当我们的程序比较小时,是否使用全局变量本身不会造成太大的影响,但如果程序比较大,函数和变量名比较多时,就要小心全局变量带来的危害。
1、全局变量是所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件,和函数的模块化编程相违背,不利于程序的修改、调试和移植。编写函数时,最好用传参返回值来和外部交换数据,不要用全局变量。但有时候又不得不使用全局变量,定义了太多的全局变量,会破坏程序的结构性,所以C语言实现大型项目是很困难的,Linux内核这样的东西简直就是神物。
2、全局变量是在程序开始运行之前的初始化阶段就诞生,到整个程序结束退出的时候才死亡,始终占用数据段上的空间,一定程度上造成了内存浪费,如果程序较大,内存也会很快被消耗完。
3、全局变量在任何地方都可以被修改,所以软件的安全性也无法得到保证
4、在面向对象的程序设计中,全局变量的初始化顺序不能确定,因编译器不同而不同,在面向对象的领域就变成了构造对象的顺序不确定,会造成无法预估的灾难性后果