温馨提示×

c++ static变量的生命周期是怎样的

c++
小樊
157
2024-07-17 16:56:54
栏目: 编程语言

在C++中,static变量的生命周期取决于它们的存储位置。静态变量可以分为两种:静态局部变量和静态全局变量。

  1. 静态局部变量:静态局部变量是在函数内部声明的静态变量。静态局部变量在程序运行时会一直存在,直到程序结束才会被销毁。它们只会被初始化一次,即使函数被调用多次,静态局部变量的值也会保持不变。
void function() {
    static int count = 0;
    count++;
    cout << "Count: " << count << endl;
}

int main() {
    function(); // 输出 Count: 1
    function(); // 输出 Count: 2
    return 0;
}
  1. 静态全局变量:静态全局变量是在全局作用域内声明的静态变量。静态全局变量的生命周期也是整个程序运行期间,但它们的作用域只限于声明它们的文件。这意味着在其他文件中无法访问静态全局变量。
// File1.cpp
static int globalVar = 10;

// File2.cpp
extern int globalVar;
int main() {
    cout << "Global Var: " << globalVar << endl; // 输出 Global Var: 10
    return 0;
}

总而言之,静态变量的生命周期是整个程序运行期间,它们在程序开始时被初始化,在程序结束时被销毁。静态变量可以在声明它们的作用域内保持其值不变,对于静态全局变量,只能在声明它们的文件中访问。

0