在for迴圈中,二者的實現結果是一樣的,不同的是++i的速度更快,因為編譯器不需要儲存臨時變數i,只有在做非常大的迴圈的時候才可能注意到這一點速度差異。
{
int a =0;
int b =
++a;
//結果是 a = 1; b = 1;}{
int a =0;
int b = a++
;//結果是 a = 1; b = 0;
}
i++ :先引用後增加,先在i所在的表示式中使用i的當前值,後讓i加1
++i :先增加後引用,讓i先加1,然後在i所在的表示式中使用i的新值
5種儲存類
儲存類時期
作用域鏈結
宣告方式
自動自動
**塊空
**塊內
暫存器自動
**塊空
**塊內,使用關鍵字register
具有外部鏈結的靜態
靜態檔案
外部所有函式之外
具有內部鏈結的靜態
靜態檔案
內部所有函式之外,使用關鍵字static
空鏈結的靜態
靜態**塊
空**塊內,使用關鍵字static
自動儲存類:屬於自動儲存類的變數具有自動儲存時期、**塊作用域和空鏈結。預設情況下,在**塊或函式的頭部定義的任意變數都輸入自動儲存類。也可使用關鍵字auto顯式的表達,如下所示:
int
main
(void
)
暫存器變數:暫存器變數多是存放在乙個暫存器而非記憶體中,所以可以比普通變數更快的被訪問和操作,但是暫存器是沒有位址的。因此,除了無法獲得暫存器變數的位址,在其它許多方面,暫存器變數和自動變數是一樣的。通過使用關鍵字register可以宣告暫存器變數。
具有外部鏈結的靜態變數: 具有外部鏈結的靜態變數具有檔案作用域、外部鏈結和靜態儲存時期。這一型別有時被稱為外部儲存類(external storage class),這一型別的變數被稱為外部變數(external variable)。把變數的定義宣告放在所有函式之外,即建立了乙個外部變數。在函式中使用外部變數時,通過關鍵字extern來再次宣告它。如果變數是在別的檔案中定義的,必須使用關鍵字extern來宣告該變數。
具有內部鏈結的靜態變數: 這種儲存類的變數具有靜態儲存時期、檔案作用域及內部鏈結。通過使用關鍵字static在所有函式外部定義。具有內部鏈結的靜態變數只可以被與它在同乙個檔案中的函式使用。
c語言學習心得
變數是程式可操作的儲存區的名稱。c中每個變數都有特定的型別,型別決定了變數儲存的大小和布局,該範圍內的值都可以儲存在記憶體中,運算子可應用於變數上。即告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數定義指定乙個資料型別,幷包含了該型別的乙個或多個變數的列表。變數宣告向編譯器保證以指定的型...
C語言學習心得
區域性變數僅在包含它的最內的大括號內有效 for迴圈中定義的變數僅在for迴圈內有效!在main 中定義的變數,不能在被調函式中使用 除全域性變數 普通變數或指標變數間的賦值,非位址概念 不同的普通變數或不同的指標變數在記憶體中所分配的空間位址不同 兩者間傳遞的是內容 對普通變數而言 內容僅僅是具體...
c語言學習心得(3)
學習c語言已經一年多,對c也算得上半個入門者,期間也寫過一些自娛自樂的 其實個人認為無論學習什麼語言,最重要的是掌握習程式設計思想,然而c語言一種學習程式設計思想的基礎語言。所以,c語言的重要性不言而喻。一 課本 無論用的是什麼書,要學好c語言,把書上的每乙個例題 習題的 讀懂,這是學c最基本的要求...