1.c語言只有一維陣列,而且陣列的大小必須在編譯器就作為乙個常數確定下來。
2.任何乙個陣列下標進行運算的,實際上都是通過指標進行。
3.int calendar[12][31] calendar是乙個陣列,該陣列包含12個陣列型別的元素,其中每個元素都是乙個擁有31個整型元素的陣列。
4.除了陣列名a 被用作運算子 sizeof 的引數這一情形,在其他所有的情形中陣列名都代表指向陣列的下標為0的元素指標。
5.int (*ap) [31]宣告了*ap是乙個擁有31個整型元素的陣列,則ap就是乙個指向這樣陣列的指標。
6.庫函式 malloc ,該函式接受乙個整數,然後分配容納同樣數目的字元的一塊記憶體。
7.c語言中會自動地將作為引數的陣列宣告轉換為相應的指標宣告。
8.複製指標並不同時複製指標所指向的資料。
9.當常數0賦值給乙個指標變數時,絕對不能被解引用。
10.重複執行表示式 --n>=0只是進行n次迭代的一種方法。
11.陣列中實際不存在的」溢界「元素的位址位於陣列所佔記憶體之後,這個位址可以進行賦值和比較。當然如果要引用該元素,則就是非法的了。
12,當兩個運算元都是有符號數時,溢位就有可能發生,一種正確的方式是將a和b都強制轉換成無符號數。
if((unsigned)+(unsigned)b>int_max)
也可以寫成
if (a>int_max-b)
13.為main函式提供返回值
0代表成功,返回非0代表程式執行失敗。
14.逗號運算子,首先對左側運算元求值,然後該值被丟棄,再對右側運算元求值。
注意,分隔函式引數的逗號非逗號運算子。
15.避免欄杆錯誤的兩個通用原則 首先考慮簡單情況下的特例,然後將得到的結果外推,仔細計算邊界,絕不掉以輕心。
16.下界是入界點,包含在取值範圍中,而上界是出界點,不包含在取值範圍中。
如果取值範圍為空,則上界等於下界。
17.緩衝區中已經存放的字元
bufptr-buffer
未占用的字元 n-(bufptr-buffer)
C陷阱與缺陷讀書筆記(第2章)語法「陷阱」
1.任何c變數的宣告都由兩部分組成,型別以及一組類似表示式的宣告符。2.因為宣告符與表示式類似,所以我們也可以在宣告符中任意使用括號。3.該型別的型別轉換符得到方式 只要把宣告中的變數名和宣告末尾的分號去掉,再將剩餘的部分用乙個括號整個封裝起來即可。4。fp 就呼叫fp所指向的函式的形式。函式運算子...
《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...