變數作用域

極為常見

在學習 C++ 程式設計時,理解變數的作用域(Scope)是非常重要的一環。變數的作用域決定了變數在哪些部分的程式碼中是可以被存取和使用的。

什麼是變數作用域?

變數作用域指的是變數在程式中的可見範圍。根據定義變數的位置不同,變數的作用域可以大致分為兩種類型:全域變數(Global Variables)和區域變數(Local Variables)。

全域變數

全域變數是在所有函式外部定義的變數。這些變數可以在整個程式中被存取和使用。通常全域變數會在程式的開頭進行定義。

範例:

#include <iostream>
using namespace std;
int globalVar = 10; // 全域變數
int main() {
    cout << "Global Variable: " << globalVar << endl;
    globalVar = 20; // 修改全域變數
    cout << "Modified Global Variable: " << globalVar << endl;
}

在這個範例中,globalVar 是一個全域變數,可以在整個程式中存取和修改。

區域變數

區域變數是定義在區塊(block)內的變數。區塊是由大括號 {} 包圍的一段程式碼,main 函式本身也是一個區塊。

#include <iostream>
using namespace std;
int main() {
    {
        int localVar = 5; // 區域變數
        cout << localVar << endl; // 5

        localVar = 10; // 修改區域變數
        cout << localVar << endl; // 10

        {
            // 這裡也可以存取和修改 localVar
            cout << localVar << endl; // 10
            localVar = 15;
            cout << localVar << endl; // 15
        }

    } // 區塊結束,區域變數 localVar 被釋放

    cout << localVar << endl; // 編譯錯誤,程式存取不到 localVar
}

在這個範例中,localVar 是一個區域變數,只能在定義它的區塊內被存取和使用。當區塊結束時,區域變數會被釋放,無法再存取。

變數作用域的好處

理解變數作用域有助於:

  1. 避免命名衝突:不同作用域內的變數可以使用相同的名稱而不會互相干擾。
  2. 提高程式可讀性:將變數限定在其使用範圍內,可以使程式更易讀、更易維護。
  3. 節省記憶體:區域變數在離開作用域後會自動釋放記憶體,有助於優化程式效能。

小測驗

變數作用域是指什麼?