静态全局变量和普通全局变量的区别
时间: 2024-09-02 22:03:51 浏览: 81
static全局变量与普通的全局变量的区别详细解析
5星 · 资源好评率100%
静态全局变量(也称为静态成员变量)和普通全局变量的主要区别在于生命周期、内存管理和作用域。
1. **生命周期**:
- 普通全局变量:当程序开始执行时创建,直到程序结束才销毁,每个函数调用都会有一份副本。
- 静态全局变量:只会在首次执行到该变量所在的模块或文件时被创建,并且在整个程序运行期间保持存在,每次函数调用不会创建新副本。
2. **内存管理**:
- 普通全局变量:每进入一个新的函数,系统为其分配内存,函数退出后释放内存。
- 静态全局变量:内存仅分配一次,无论函数是否调用,其值都不会改变,除非显式地重新赋值。
3. **作用域**:
- 普通全局变量:在整个程序范围内可见,但在某个函数内部不能直接访问。
- 静态全局变量:虽然也是全局范围,但在函数内部通过作用于其所在类的实例可以访问(若为类静态变量),而不是直接通过类名。
4. **初始化**:
- 普通全局变量:如果没有初始值,其值通常是不确定的(取决于编译器的实现)。
- 静态全局变量:如果未指定初始值,通常会被默认初始化为0(对于数值类型)或空(对于引用类型)。
阅读全文