用static定义的全局静态变量有哪些

使用 static 关键字定义的全局静态变量具有以下特点:

  1. 文件作用域:静态变量在全局范围内可见,但其作用范围仅限于定义该变量的源文件内部。其他源文件无法访问这些静态变量。
  2. 静态存储期:静态变量在程序的整个执行过程中都存在,即使超出了其定义所在的代码块或函数的作用域。它们在内存中保持不变。
  3. 默认初始化:未显式初始化的静态变量会被自动初始化为0(对于数字类型)或者空指针(对于指针类型)。
  4. 持久性:静态变量的值在函数调用之间保持不变。每次调用函数时,静态变量的值都会保留上一次函数调用结束时的值。

使用 static 关键字定义的全局静态变量通常用于以下情况:

  • 需要在一个源文件中共享数据,但又不希望这些数据被其他源文件访问。
  • 需要在函数调用之间保持变量的值。
  • 需要全局变量的持久性,即使函数执行完毕,变量的值仍然保持不变。

示例代码如下:

// 定义静态全局变量
static int globalStaticVar = 10;

// 其他函数或代码块无法访问 globalStaticVar 变量
void func() {
    // 静态变量的值在函数调用之间保持不变
    static int localStaticVar = 5;
    
    // 使用静态全局变量
    globalStaticVar = 20;
    
    // 使用静态局部变量
    localStaticVar++;
}

在上述示例中,globalStaticVar 是一个静态全局变量,它只能在定义该变量的源文件内部访问。localStaticVar 是一个静态局部变量,它的值在函数调用之间保持不变。


【AD】DMIT优惠码 – 美国洛杉矶CN2 GIA VPS配置升级季付28美元起