c++ static變量的生命周期是怎樣的

c++
小樊
113
2024-07-17 16:56:54

在C++中,static變量的生命周期取決于它們的存儲(chǔ)位置。靜態(tài)變量可以分為兩種:靜態(tài)局部變量和靜態(tài)全局變量。

  1. 靜態(tài)局部變量:靜態(tài)局部變量是在函數(shù)內(nèi)部聲明的靜態(tài)變量。靜態(tài)局部變量在程序運(yùn)行時(shí)會(huì)一直存在,直到程序結(jié)束才會(huì)被銷(xiāo)毀。它們只會(huì)被初始化一次,即使函數(shù)被調(diào)用多次,靜態(tài)局部變量的值也會(huì)保持不變。
void function() {
    static int count = 0;
    count++;
    cout << "Count: " << count << endl;
}

int main() {
    function(); // 輸出 Count: 1
    function(); // 輸出 Count: 2
    return 0;
}
  1. 靜態(tài)全局變量:靜態(tài)全局變量是在全局作用域內(nèi)聲明的靜態(tài)變量。靜態(tài)全局變量的生命周期也是整個(gè)程序運(yùn)行期間,但它們的作用域只限于聲明它們的文件。這意味著在其他文件中無(wú)法訪問(wèn)靜態(tài)全局變量。
// File1.cpp
static int globalVar = 10;

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

總而言之,靜態(tài)變量的生命周期是整個(gè)程序運(yùn)行期間,它們?cè)诔绦蜷_(kāi)始時(shí)被初始化,在程序結(jié)束時(shí)被銷(xiāo)毀。靜態(tài)變量可以在聲明它們的作用域內(nèi)保持其值不變,對(duì)于靜態(tài)全局變量,只能在聲明它們的文件中訪問(wèn)。

0