使用 static
关键字定义的全局静态变量具有以下特点:
- 文件作用域:静态变量在全局范围内可见,但其作用范围仅限于定义该变量的源文件内部。其他源文件无法访问这些静态变量。
- 静态存储期:静态变量在程序的整个执行过程中都存在,即使超出了其定义所在的代码块或函数的作用域。它们在内存中保持不变。
- 默认初始化:未显式初始化的静态变量会被自动初始化为0(对于数字类型)或者空指针(对于指针类型)。
- 持久性:静态变量的值在函数调用之间保持不变。每次调用函数时,静态变量的值都会保留上一次函数调用结束时的值。
使用 static
关键字定义的全局静态变量通常用于以下情况:
- 需要在一个源文件中共享数据,但又不希望这些数据被其他源文件访问。
- 需要在函数调用之间保持变量的值。
- 需要全局变量的持久性,即使函数执行完毕,变量的值仍然保持不变。
示例代码如下:
// 定义静态全局变量
static int globalStaticVar = 10;
// 其他函数或代码块无法访问 globalStaticVar 变量
void func() {
// 静态变量的值在函数调用之间保持不变
static int localStaticVar = 5;
// 使用静态全局变量
globalStaticVar = 20;
// 使用静态局部变量
localStaticVar++;
}
在上述示例中,globalStaticVar
是一个静态全局变量,它只能在定义该变量的源文件内部访问。localStaticVar
是一个静态局部变量,它的值在函数调用之间保持不变。