4.3 外部變量
- 外部變量可以在全局範圍內訪問;
- 外部變量與內部變量相比具有更大的作用域和更長的生存期。
- push操作中要注意+和*滿足交換律,彈出次序無關緊要;而-與/需對運算符的左右操作數加以區分。
- 格式顯示“%g”爲浮點數輸出,不顯示無意義的零"0"。
- 當跳過不做任何操作的時候直接用;顯示。
4.4 作用域規則
- 如果要在外部變量的定義之前使用變量,或者外部變量的定義與變量的使用不在同一個源文件中,則必須在相應的變量聲明中強制性地使用關鍵字extern。
- 在一個源程序的所有源文件中,一個外部變量只能在某個文件中定義一次,而其它文件可以通過extern聲明來訪問它。
4.6 靜態變量
- 通過static限定外部對象,可以達到隱藏外部對象的目的。
- 如果把函數聲明爲static類型,則該函數名除了對該函數聲明所在的文件可見外,其它文件都無法訪問。
- static類型的內部變量是一種只能在某個特定函數中使用但一直佔據存儲空間的變量。
4.7 寄存器變量
- 將register變量放在機器的寄存器中,這樣可以使程序更小、執行速度更快。
- 對於過量的寄存器,編譯器可以忽略過量的或不支持的寄存器變量聲明。
- 無論寄存器變量實際上是不是存放在寄存器中,它的地址都是不能訪問的。
4.9 初始化
- 在不進行顯示初始化的情況下,外部變量和靜態變量都將被初始化爲0,而自動變量和寄存器變量的初值則沒有定義,且初始化表達式必須是常量表達式,只初始化一次。
4.10 遞歸
- 遞歸代碼比較緊湊,並且更易於編寫與理解。
4.11 C預處理器
- 宏替換中替換隻對記號進行,對括在引號中的字符串不起作用。
- #undef 取消名字的宏定義。
- 在替換文本中,參數名以#作爲前綴則結果將被擴展爲由實際參數替換該參數的帶引號的字符串。
- "被替換爲\",反斜槓\將被替換爲\\。