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

2021-08-02 01:19:55 字數 837 閱讀 9306

如果乙個整型常數的第乙個字元是數字0,那麼該常量將被視作八進位制數。如0195相當於十進位制數141

c語言中,else始終與同一對括號內最近的未匹配的if結合。

switch語句中的case語句若在結尾處無break,程式將會繼續執行下一條case語句

非陣列的指標

#include 

char *r,*s = "hhh",*t = "sigalhu";

r = (char*)malloc(strlen(s) + strlen(t) + 1);

if(!r)

strcpy(r, s);

strcat(r, t);

free(r);

extern修飾變數的宣告。舉例來說,如果檔案a.c需要引用b.c中變數int v,就可以在a.c中宣告extern int v,然後就可以引用變數v。這裡需要注意的是,被引用的變數v的鏈結屬性必須是外鏈結(external)的,也就是說a.c要引用到v,不只是取決於在a.c中宣告extern int v,還取決於變數v本身是能夠被引用到的。這涉及到c語言的另外乙個話題--變數的作用域。能夠被其他模組以extern修飾符引用到的變數通常是全域性變數。還有很重要的一點是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函式fun定義的開頭處宣告extern int v,然後就可以引用到變數v了,只不過這樣只能在函式fun作用域中引用v罷了,這還是變數作用域的問題。對於這一點來說,很多人使用的時候都心存顧慮。好像extern宣告只能用於檔案作用域似的。

static可以把變數和函式的作用域限制在乙個原始檔中,避免命名衝突。

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

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

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

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

C陷阱與缺陷讀書筆記(二)

第三章 3.1 指標與陣列 理解 int calendar 12 31 c語言中只有一維陣列,calendar是乙個一維陣列,該陣列含有12個陣列型別的元素,其中每個元素都 是乙個含有31個整型元素的陣列 int monthp 31 monthp 是乙個擁有31個整型元素的陣列,mouthp是乙個 ...