c專家程式設計讀書筆記(2)
2005.12.19
1、早用lint,勤用lint,不要等到最後才用lint。lint是軟體的道德標準
2、關於typedef。
先看乙個宣告:void (*signal(int sig, void (*func)(int))) (int);
對於它,可以簡化為:
typedef void (*ptr_to_func) (int)
ptr_to_func signal(int, ptr_to_func)
對於像以上那個複雜的typedef宣告,你大可不必深入的去記憶、研究,只需要把它替代,化簡為乙個宣告,那意義就豁然開朗了。
注意:
①不要在乙個typedef中放入幾個宣告器;
②千萬不要把typedef嵌到宣告中間部分。
typedef與define的區別:
①可以用其他型別說明符對巨集型別名進行擴充套件,但對typedef所定義的型別名卻不能這樣做。
②在連續宣告中,用typedef定義的型別能夠保證宣告中所有的變數均為同一種型別,而用#define定義的型別則無法保證。
3、陣列與指標並不相同,某些情況下,他倆是一樣的,不過也存在情況,他倆不一樣例如:
檔案1: int mango[100];
檔案2: extern int * mango;
這是不同的,相當於把整數和浮點數混為一談。
4、turning實驗,人工智慧,人機對話,都是十分有意思的東西。
5、堆區域用於動態分配的儲存,也就是通過malloc(記憶體分配)函式獲得的記憶體,並通過指標訪問。堆中所有東西都是匿名的————不能按名字直接訪問,只能通過指標間接訪問。
被分配的記憶體總是經過對齊,以適合及其最大尺寸的原子訪問。
堆的末端由乙個稱為break的指標來標識。當堆管理器需要更多記憶體時,它可以通過系統呼叫brk和sbrk來移動指標。一般情況下,不必自己顯示呼叫brk,如果分配的記憶體容量很大,brk最終會被自動呼叫。
《C專家程式設計》Finux you讀書筆記(2)
p.關於陣列和指標 1.先看乙個程式,你認為如果編譯它,會有錯誤?1 include stdio.h 2 include conio.h 3chara 2 2 4void fuc 1 char a 5 8void fuc 2 char a 9 12void fuc 3 char a 13 16voi...
《C 專家程式設計》讀書筆記
前言 程式設計挑戰 計算機日期 第二章 這不是bug,而是語言特徵 switch的乙個bug break中斷了什麼 第三章 分析c語言宣告 程式設計挑戰 把c 語言的宣告翻譯成通俗的語言 include include include include define max len 100 enum ...
《C專家程式設計》讀書筆記
第一章 const float 表示乙個指向float型別常量的指標 第二章 1.在c語言中const並非真正表示 常量 在陣列定義與case中不可以使用 2.case的一些問題 2 3 main 15 這段 列印出來的是 3.函式可見性 void sb any where 2 extern voi...