# 區全域變數 ## 變數的範圍 (Scope) 變數的範圍指的是變數**在程式中可被存取的區域**。 根據範圍的不同,變數可以分為: ### 區域變數 (Local Variable): * **宣告在函式或程式內**。 * **僅在宣告的區塊內有效**。 * 當區塊結束時,變數**所佔用的記憶體會被釋放**。 ### 全域變數 (Global Variable): * **宣告在所有函式之外**。 * 在**程式的任何地方都可以存取**。 * 一旦宣告,就會一直存在,直到程式結束。 ## 變數的存活期 (Lifetime) 變數的存活期指的是**變數在記憶體中存在的時間**。 ### 自動變數 (Automatic Variable): * 通常是區域變數。 * 在進入作用域時被創建,離開作用域時被銷毀。 ### 靜態變數 (Static Variable): * 可以是區域變數,也可以是全域變數。 * 如果是區域變數,則在函式第一次被呼叫時初始化,且在函式結束後不會被銷毀,下一次呼叫時,還是**保留**上一次的值。 * 如果是全域變數,則在程式開始執行時初始化,且在程式結束時銷毀。 # 變數的初始化 初始化是指在變數宣告時給**變數賦予一個初始值**。 eg. ```cpp= int numbers = 0; ``` ## 初始化的重要性: 避免使用未初始化的變數,這可能會導致不可預測的結果。 確保變數在使用前有正確的值。 ## 初始化方式: 顯式初始化: 在宣告變數時直接賦值。 隱式初始化: 對於靜態變數,如果沒有顯式初始化,則會被自動**初始化為 0 或 null**。 eg. ```cpp= #include <iostream> int global_var = 10; // 全域變數 void Func() { int local_var = 20; // 區域變數 static int static_local_var = 30; // 靜態區域變數 std::cout << "global_var: " << global_var << std::endl; std::cout << "local_var: " << local_var << std::endl; std::cout << "static_local_var: " << static_local_var << std::endl; static_local_var++; } int main() { Func(); Func(); return 0; } ``` ## 哦哦 * **區域變數** 作用域有限,存活期短,每次函式呼叫都會重新初始化。 * **全域變數** 作用域廣,存活期長,但過多使用可能導致命名衝突和程式難以維護。 * **靜態變數** **結合了區域變數和全域變數的特點**,可以保留上次呼叫的值。 * **初始化** 是確保**變數有正確初始值的重要步驟**。 ### 選擇合適的變數 * **區域變數**: 適合用於**暫存局部計算結果**或控制流程的變數。 * **全域變數**: 適合用於**整個程式**都需要存取的變數,但要小心使用,避免命名衝突和耦合。 * **靜態變數**: 適合用於需要在函式多次呼叫之間保留值的變數。 ## **NOTE** * 避免過多使用全域變數: 全域變數會增加程式複雜度,降低可讀性。 * 注意變數的作用域和存活期: 避免在變數超出作用域後使用。 * 初始化變數: 確保每個變數在使用前都有正確的初始值。 選擇合適的變數類型和初始化方式,可以提高程式碼的可讀性。