【C++】全局變量、靜態全局變量、靜態局部變量

1. 全局變量

全局變量存儲在靜態存儲區,其作用域是全局作用域,生命週期是整個程序的生命週期。
具體而言,在一個文件中定義一個全局變量,在程序的其它文件中可以通過extern關鍵字再次聲明說明該變量已經定義。

2. 靜態全局變量

靜態全局變量存儲在靜態存儲區,其作用域只能是定義該變量的文件,生命週期是整個程序的生命週期。

3. 靜態局部變量

靜態局部變量存儲在靜態存儲區,作用域是定義該變量的函數內,生命週期是整個程序的生命週期。
值得一提的是,退出該函數後, 儘管靜態局部變量還繼續存在,但不能使用它,雖然離開定義它的函數後不能使用,但如再次調用定義它的函數時,它又可繼續使用, 而且保存了上次被調用後留下的值。 因此,當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮採用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用。

int increment() {
    static int a = 0;

    a++;

    return a;
}

int main() {
    int i = 0;

    for (i = 0; i < 5; i++)
        cout << increment() << endl;
    return 0;
}

1
2
3
4
5

static變量總結:
1. static 全局變量:改變作用範圍,不改變存儲位置
2. static 局部變量:改變存儲位置,不改變作用範圍

引用

這裏寫鏈接內容
這裏寫鏈接內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章