如果乙個整型常數的第乙個字元是數字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是乙個 ...