變數的命名規則
- 變數名稱開頭只能以英文或底線符號(如:_ )
- 大小寫有區分,不同大小寫視為不同變數
- 變數名稱不能與保留字、函數名稱相同
- 變數不能為特殊符號,但可使用底線(如:_ )
變數的宣告方式
僅包含資料類型之宣告方式:
資料類型 變數名稱;
範例:
int x;
包含資料類型、儲存類型之宣告方式:
儲存類型 資料類型 變數名稱;
範例:
auto int x;
變數的資料類型
- 整數資料類型
- 浮點數資料類型
- 字元資料類型
- void資料類型
變數的儲存類型
宣告變數的儲存類型之目的、好處:提高記憶體使用率、加快程式執行速度、減少誤用變數的錯誤發生。
4種宣告變數儲存類型的關鍵字:auto、extern、static、register
變數等級
區域變數(Local Variable)
暫存器變數(Register variable):register
可視範圍與生命期同自動變數,其之間的差異在於編譯器將此種變數置入於cpu中的 暫存器,而自動變數是置入於記憶體。暫存器變數存取速度比自動變數快,可提升執 行效率。但cpu暫存器數量較少,最多只能宣告兩個暫存器變數,超過兩個以上時, 多出來的暫存器變數會自動轉換成自動變數(使用記憶體)。
<說明圖>
可視範圍與生命期同自動變數,其之間的差異在於編譯器將此種變數置入於cpu中的 暫存器,而自動變數是置入於記憶體。暫存器變數存取速度比自動變數快,可提升執 行效率。但cpu暫存器數量較少,最多只能宣告兩個暫存器變數,超過兩個以上時, 多出來的暫存器變數會自動轉換成自動變數(使用記憶體)。
<說明圖>
全域變數(Global Variable)
靜態外部變數(Static external variable):static extern
同外部靜態變數。
同外部靜態變數。
附註:
資料類型:告知編譯器應該保留多少記憶體空間給該變數使用。
<例如>int
儲存類型:告知編譯器該變數的生命期(Life time)與可視範圍(Scope)。
<例如>auto、extern、static、register
生命期:記憶體空間保留給該變數使用的時間長度。
可視範圍(有效範圍):告知該變數允許的有效使用範圍。分為全域變數、區域變數、區塊變數。
全域變數:宣告於所有函式之外,結束於程式終止之時。其預設值通常為0。
區域變數:在函式內所宣告的變數,僅在該函式內可使用,其生命期由宣告開始至離開該函式後結束。結束時,將其記憶體空間釋放,再次進入該函式時,則重新配置記憶體空間,亦稱動態變數。其預設值通常為亂數。
區塊變數:{ }、if(...){ }、for(...){ }、while(){ }之{ }內的變數。
變數覆蓋:可視範圍小的變數會暫時覆蓋可視範圍大的變數。
可視範圍大小:全域變數 > 區域變數 > 區塊變數。
<說明圖>
<例如>int
儲存類型:告知編譯器該變數的生命期(Life time)與可視範圍(Scope)。
<例如>auto、extern、static、register
生命期:記憶體空間保留給該變數使用的時間長度。
可視範圍(有效範圍):告知該變數允許的有效使用範圍。分為全域變數、區域變數、區塊變數。
全域變數:宣告於所有函式之外,結束於程式終止之時。其預設值通常為0。
區域變數:在函式內所宣告的變數,僅在該函式內可使用,其生命期由宣告開始至離開該函式後結束。結束時,將其記憶體空間釋放,再次進入該函式時,則重新配置記憶體空間,亦稱動態變數。其預設值通常為亂數。
區塊變數:{ }、if(...){ }、for(...){ }、while(){ }之{ }內的變數。
變數覆蓋:可視範圍小的變數會暫時覆蓋可視範圍大的變數。
可視範圍大小:全域變數 > 區域變數 > 區塊變數。
<說明圖>
沒有留言:
張貼留言