# 第二十周 區域變數和全域變數 * 變數是一種在程式執行過程中暫時存放資料的記憶空間,對應的變數名稱就是指向該空間的識別代號。變數都有其有效範圍(scope),如果是宣告在func1()函式內的變數,則其有效範圍只在該函數內部,離開這個有效範圍─譬如說在別的函式或是呼叫func1()的主程式裡,就不能夠使用這個變數。這些僅存活在函式內部的變數,就稱為區域變數(local variable)。 * 定義在函式內部的變數就是區域變數,通常我們會把這些變數宣告在函式一開始的位置,但並非一定要放在開始位置不可。譬如我們可以把變數宣告在迴圈或者if-then-else區塊內,由於迴圈或if判斷區塊是函式內的一個程式區塊,所以這個變數的有效範圍將只有在迴圈區塊或if區塊中,也就是該變數是屬於這個區塊的區域變數,離開這個區塊,就算還在同樣的函式裡,也不能使用這個變數。 ## 練習 ### 說明:處裡輸入資料以及負責計算總分與平均的此2自訂函式,沒有函式回傳值也沒有參數;則儲存成績的陣列以及儲存總分與平均的變數,便要宣告為全域變數;如此才能讓整隻程式內的所有函式存取 ```cpp= #include <iostream> using namespace std; int score[3]; int sum; float avg; void add() { cout << "輸入3個成績(使用空白隔開):"; cin >> score[0] >> score[1] >> score[2]; } void getSum_Avg() { sum = 0; for (int v : score) sum += v; avg = sum / 3.0f; } int main() { add(); getSum_Avg(); cout << "總分= " << sum << endl; cout << "平均= " << avg << endl; system("pause"); } ```