無論在什麼時候,如果遇見了這樣一條語句malloc(strlen(str)); , 幾乎可以斷定它是錯誤的,malloc(strlen(str)+1);才對;
總結——進步是計算機軟體工程和程式語言設計藝術逐步發展的重要動因;
#includeint main(int argc, char **argv) }
以上**編譯都不會通過,說明const 其實並不真正表示常量;
break 語句事實上跳出的是最近的那層迴圈語句或者switch 語句;
當sizeof 的運算元時個型別名時,兩邊必須加上括號,(這常常使人誤以為它是個函式),但運算元如果是變數則不必加括號;
有些專家建議在c語言中記牢兩個優先順序就夠了:乘法和除法大於加法和減法,在設計其他的操作符時一律加上括號;
操作符的結合性:它是仲裁者,在幾個操作符具有相同優先順序時決定先執行哪乙個;
所有賦值符(包括符合賦值符)都具有右結合性;(又結合的也就兩類一類是賦值符一類是單目運算子);
#include#includechar * f() int main(int argc, char **argv)
以上**列印不出預計值,因為buf是區域性變數,函式結束時,由於該變數已被銷毀,誰也不知道這個指標所指向的位址的內容是什麼;
C專家程式設計學習筆記 2
第4章 令人震驚的事實 陣列和指標並不相同 1.區別定義和宣告 宣告相當於普通的宣告 它所說明的並非自身,而是描述其他地方的建立的物件.定義相當於特殊的宣告 它為物件分配記憶體 2.當書寫了extern char p,然後用p 3 來引用其中的元素時,編譯器將會 1 取得符號表中p的位址,提取儲存與...
《C專家程式設計》學習筆記2
乙個 l的 nul用於結束乙個ascll字串 兩個l 的null 用於表示什麼也不指向的指標 標準的c編譯器至少允許一條switch語句中有257個case標籤。為了滿足乙個8bit的字元的所有情況。switch的另乙個問題是它內部的任何語句都可以加上標籤,並在執行時跳轉到 這就有可能破壞程式流的結...
C專家程式設計讀書筆記(2)
c專家程式設計讀書筆記 2 2005.12.19 1 早用lint,勤用lint,不要等到最後才用lint。lint是軟體的道德標準 2 關於typedef。先看乙個宣告 void signal int sig,void func int int 對於它,可以簡化為 typedef void ptr...