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

2021-07-25 19:45:51 字數 1400 閱讀 2037

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()跳出相應的輸出項,在程式讀取檔案中特定列的內容時,這項跳過功能很有用。

讀《C Primer Plus》的總結

經過這麼多天的學習,探索,反思,我覺得有必要總結一下自己的學習過程。希望把自己這麼多天來的混亂思維整理一下。看過大牛的 讀過大牛的文章,不得不感嘆自己的膚淺和無知,但我還是會對自己說,堅持,不放棄。1 c 中定義變數的,我想每一門語言都差不多。主要是一些字元的ascii碼的問題,和轉義字元的問題,理...

C Primer Plus 第11章 筆記

1 如果字串字面量之間沒有間隔,或者用空白字元分隔,c會將其視為串聯起來的字串字面量。2 用標準的陣列初始化模式給字串初始化時,末尾一定要加上 0 不然就不是乙個字串,而是乙個字元陣列。讓編譯器計算陣列的大小只能用在初始化時。4 const char ar1 something is pointin...

C primer plus 第4章 復合型別

1.陣列初始化 2.字串 兩種方式 c 風格字串 以 0結尾 string類庫 單引號表示字元常量 a 是字串編碼的簡寫,char a a 是正確的。但是 a 表示的是兩個字元a和 0組成的字串,實際上 a 表示的是字串所在的記憶體位址,因此char a a 是非法的 1 cin.getline a...