2016年9月21日 星期三

變數(Variable)

變數的命名規則


  • 變數名稱開頭只能以英文或底線符號(如:_ )
  • 大小寫有區分,不同大小寫視為不同變數
  • 變數名稱不能與保留字、函數名稱相同
  • 變數不能為特殊符號,但可使用底線(如:_ )

變數的宣告方式

僅包含資料類型之宣告方式:
資料類型 變數名稱;
範例:
int x;

包含資料類型儲存類型之宣告方式:
儲存類型 資料類型 變數名稱;
範例:
auto int x;

變數的資料類型

  • 整數資料類型
int
  • 浮點數資料類型
floatdouble
  • 字元資料類型
char
  • void資料類型
void



變數的儲存類型

宣告變數的儲存類型之目的、好處:提高記憶體使用率、加快程式執行速度、減少誤用變數的錯誤發生。

4種宣告變數儲存類型的關鍵字:auto、extern、static、register

變數等級
    區域變數(Local Variable)
        自動變數(Automatic variable):auto
            一般資料類型前方未加上儲存類型,都是屬於之。其生命期自宣告變數開始到離開該             函式為止。
            <說明圖>

        靜態變數(Static varisble):static
            分為內部靜態變數與外部靜態變數,其有效範圍同上述,然而最大的差別在於其生命             期持續至程式停止執行為止。
            <說明圖>

        暫存器變數(Register variable):register
            可視範圍與生命期同自動變數,其之間的差異在於編譯器將此種變數置入於cpu中的               暫存器,而自動變數是置入於記憶體。暫存器變數存取速度比自動變數快,可提升執             行效率。但cpu暫存器數量較少,最多只能宣告兩個暫存器變數,超過兩個以上時,               多出來的暫存器變數會自動轉換成自動變數(使用記憶體)。
            <說明圖>



    全域變數(Global Variable)
        外部變數(External variable):extern
            在函式以外的區域所宣告的變數稱為外部變數,此種變數可供該程式之所有函式使                 用。
            <說明圖>

        靜態外部變數(Static external variable):static extern
            同外部靜態變數。

附註:

資料類型:告知編譯器應該保留多少記憶體空間給該變數使用。
   <例如>int
儲存類型:告知編譯器該變數的生命期(Life time)可視範圍(Scope)
   <例如>auto、extern、static、register

生命期:記憶體空間保留給該變數使用的時間長度。
可視範圍(有效範圍):告知該變數允許的有效使用範圍。分為全域變數區域變數區塊變數
全域變數:宣告於所有函式之外,結束於程式終止之時。其預設值通常為0。

區域變數:在函式內所宣告的變數,僅在該函式內可使用,其生命期由宣告開始至離開該函式後結束。結束時,將其記憶體空間釋放,再次進入該函式時,則重新配置記憶體空間,亦稱動態變數。其預設值通常為亂數。

區塊變數:{ }、if(...){ }、for(...){ }、while(){ }之{ }內的變數。
變數覆蓋:可視範圍小的變數會暫時覆蓋可視範圍大的變數。
可視範圍大小:全域變數 > 區域變數 > 區塊變數。
<說明圖>




沒有留言:

張貼留言