全局变量不用static声明的弊端
时间: 2023-05-15 21:05:53 浏览: 102
全局变量不使用static声明的弊端是可能会导致命名冲突和不必要的内存开销。如果多个文件中都定义了同名的全局变量,那么在链接时就会出现冲突,导致程序无法编译通过。此外,全局变量没有使用static声明时,它的作用域是整个程序,这意味着它会一直存在于内存中,即使在它不再需要的时候也是如此,这会浪费内存资源。因此,建议在定义全局变量时,使用static关键字来限制其作用域,避免命名冲突和不必要的内存开销。
相关问题
普通全局变量和static全局变量的区别?
普通全局变量和static全局变量在作用域和生命周期上有所不同。
1. 普通全局变量:
- 作用域:普通全局变量在整个程序中都可见,可以被任何函数访问。
- 生命周期:普通全局变量的生命周期从程序开始到程序结束,即全局变量在程序运行期间一直存在。
2. static全局变量:
- 作用域:static全局变量只在定义它的源文件中可见,其他源文件无法访问。
- 生命周期:static全局变量的生命周期也从程序开始到程序结束,但是它只能在定义它的源文件中使用。
区别总结:
- 作用域:普通全局变量在整个程序中可见,而static全局变量只在定义它的源文件中可见。
- 访问权限:普通全局变量可以被其他源文件访问,而static全局变量只能在定义它的源文件中使用。
- 生命周期:两者的生命周期是从程序开始到程序结束,但是static全局变量的作用范围更小。
static全局变量和非static全局变量
静态全局变量(static global variable)和非静态全局变量(non-static global variable)是在程序的任何地方都能够访问的全局变量。
静态全局变量具有以下特点:
1. 在声明它的文件中可以被访问,但是在其他文件中不可见。
2. 生命周期从程序开始到程序结束,即使在它的作用域外,其值也会保持不变。
3. 在内存中只有一份拷贝,多个文件中对该变量的引用都指向同一块内存。
非静态全局变量具有以下特点:
1. 在声明它的文件中和其他文件中都可以被访问。
2. 生命周期从程序开始到程序结束,即使在它的作用域外,其值也会保持不变。
3. 在内存中只有一份拷贝,多个文件中对该变量的引用都指向同一块内存。
总结来说,静态全局变量只能在声明它的文件中被访问,而非静态全局变量可以在整个程序中被访问。而且它们的生命周期都是从程序开始到程序结束,并且在内存中只有一份拷贝。