C陷阱與缺陷 讀書筆記4 連線

2022-08-04 09:33:14 字數 827 閱讀 5268

第四章

一、知識點

1、典型的聯結器把由編譯器或彙編器生成的若干個目標模組,整合成乙個被稱為載入模組或可執行檔案的實體,該實體能夠被作業系統直接執行。(p74)

2、聯結器通常把目標模組看成是由一組外部物件組成的。每個外部物件代表著機器記憶體中的某個部分,並通過乙個外部名稱來識別。因此,程式中的每個函式和每個外部變數,如果沒有被宣告為static,就都是乙個外部物件。除了外部物件之外,目標模組還可能包括了對其他模組中的外部物件的引用。當聯結器生成載入模組的過程中,它必須同時記錄這些外部物件的引用。當聯結器讀入乙個目標模組時,它必須解析出這個目標模組中定義的所有外部物件的引用,並作出標記說明這些外部物件不再是未定義的。(p74)

3、在c語言中,乙個未指定初始值的外部變數一般被初始化為0。(p75)

4、每個外部物件都必須在程式某個地方進行定義。因此,如果乙個程式中包括了語句:

extern int a;

那麼,這個程式就必須在別的某個地方包括語句:

int a;

這兩個語句可以是在同乙個原始檔中,也可以位於程式的不同原檔案中。(p75)

5、static修飾符是乙個能夠減少命名衝突的有用工具。比如 static int a; 和 int a;含義相同,只不過這裡a的作用域限制在乙個原始檔內,對於其他原始檔,a是不可見的。static 修飾符不僅適用於變數,也適用於函式。(p78)

6、如果乙個函式在被定義或宣告之前被呼叫,那麼它的返回型別就預設為整型。(p80)

7、如果乙個函式的呼叫與定義分別位於不同的檔案中,那麼我們必須在呼叫它的檔案中宣告這個函式:(p81)

double square(double);

main()

《C缺陷與陷阱》讀書筆記

一 為什麼很多程式設計規範上要求單字元符號兩邊用空格隔開呢?如 a 2 最好不要寫成 a 2 在 c陷阱與缺陷 中詞法陷阱部分講到 如y x p,原本想表達的意思是p指標指向除數,但實際編譯過程中,編譯器會將 理解為一段注釋的開始,編譯器將不斷地讀入字元,直到 出現為止 這一錯誤也在 c專家程式設計...

《C陷阱與缺陷》讀書筆記

如果乙個整型常數的第乙個字元是數字0,那麼該常量將被視作八進位制數。如0195相當於十進位制數141 c語言中,else始終與同一對括號內最近的未匹配的if結合。switch語句中的case語句若在結尾處無break,程式將會繼續執行下一條case語句 非陣列的指標 include char r,s...

《C陷阱與缺陷》讀書筆記2

第二章 語法陷阱 2 1 理解函式宣告 任何c變數的宣告都由兩部分組成 型別以及一組類似表示式的宣告符 declarator float g h 表示 g 與 h 是浮點表示式。因為 結合優先順序高於 g 也就是 g g是乙個函式,該函式的返回值型別為指向浮點數的指標。同理,可以得出h是乙個函式指標...