1. 程式人生 > >《C Primer Plus》(1-4章)讀書筆記

《C Primer Plus》(1-4章)讀書筆記

1.1、C通過編譯和連結兩個步驟來實現將原始碼轉換為可執行檔案的過程,編譯器把原始碼轉換成中間程式碼,連結器把中間程式碼和其他程式碼合併,生成可執行檔案。

1.2、原始碼轉換為機器語言程式碼並把結果放在目的碼檔案中,目的碼檔案缺失啟動程式碼和庫函式程式碼,啟動程式碼充當程式和OS之間的介面。

1.3、連結器的作用:將目的碼、系統的標準啟動程式碼和庫程式碼合併成一個檔案——可執行檔案。

2.1、int是main()函式的返回型別,返回給OS。

2.2、給變數命名可以用小寫字母、大寫字母、數字和下劃線,而且,名稱的第一個字元必須是字元或者下劃線,不能是數字。

2.3、提高程式可讀性的四個技巧:1、選擇有意義的函式名。2、寫註釋。3、在函式中用空行分隔概念上的多個部分。4、每條語句各佔一行。

3.1、轉換說明:十進位制%d,八進位制%o,十六進位制%x,要顯示各進位制的字首o,ox和oX,分別使用%#o,%#x,%#X。

3.2、C99標準添加了一種新的浮點型常量格式——P計數法,即在十六進位制數前加上十六進位制字首(ox或者oX),用p和P分別替代e和E,用2的冪代替10的冪,如:oxa.1fp10。

3.3、printf()何時把輸出傳送到螢幕上——緩衝區滿、遇到換行符或者需要輸入的時候,也可以使用fflush()函式重新整理緩衝區(如何判斷緩衝區已滿???)。

4.1、C語言用空(null)字元標記字串的結束,空字元不是數字0,它是非列印字元,其ASCII碼值是0。

4.2、scanf(%s)在遇到第一個空白(空格、製表符或者換行符)時就不再讀取輸入。

4.3、sizeof使用圓括號的時機取決於運算物件是型別還是特定量。是型別時,圓括號必不可少,是特定量時,可有可無。

4.4、C90標準新增了const關鍵字,用於限定一個變數為只讀。

4.5、型別轉換表明函式應該讀取多少個位元組而不是讀取該引數儲存位元組的大小(只是按照對應的轉換說明來解釋而已跟儲存大小無關)。

4.6、printf()的返回值是列印的字元個數(針對所有字元數,包括空格和換行符),如果輸出有錯誤,則返回一個負值。

4.7、給字串斷行有三種方法:1、用多個printf()語句。2、用反斜槓(\)和Enter(或Return)鍵組合來斷行。3、用字串。

4.8、scanf()使用空白(換行符、製表符和空格)把輸入分成多個欄位,%c轉換說明例外。

4.9、疑問:為什麼double型別的資料用printf()已%f格式列印的輸出是float型別?

4.10、scanf()函式返回成功讀取的項數,如果沒有讀取任何項,scanf()返回0,當scanf()檢測到“檔案結尾”時,返回EOF。

4.11、printf()的*修飾符可以通過程式來指定欄位寬度,如轉換說明%*d,那麼引數列表中應包含*和d對應的值,但是對於scanf(),把*放在%和轉行字元之間時,會使得scanf()跳出相應的輸出項,在程式讀取檔案中特定列的內容時,這項跳過功能很有用。