C專家編程讀書筆記(下)

字號:

1、早用lint,勤用lint,不要等到最后才用lint。lint是軟件的道德標準
    2、關(guān)于typedef。
    先看一個聲明:void (*signal(int sig, void (*func)(int))) (int);
    對于它,可以簡化為:
    typedef void (*ptr_to_func) (int)
    ptr_to_func signal(int, ptr_to_func)
    對于像以上那個復(fù)雜的typedef聲明,你大可不必深入的去記憶、研究,只需要把它替代,化簡為一個聲明,那意義就豁然開朗了。
    注意:
    ①不要在一個typedef中放入幾個聲明器;
    ②千萬不要把typedef嵌到聲明中間部分。
    typedef與define的區(qū)別:
    ①可以用其他類型說明符對宏類型名進行擴展,但對typedef所定義的類型名卻不能這樣做。
    ②在連續(xù)聲明中,用typedef定義的類型能夠保證聲明中所有的變量均為同一種類型,而用#define定義的類型則無法保證。
    3、數(shù)組與指針并不相同,某些情況下,他倆是一樣的,不過也存在情況,他倆不一樣例如:
    文件1: int mango[100];
    文件2: extern int * mango;
    這是不同的,相當于把整數(shù)和浮點數(shù)混為一談。
    4、Turning實驗,人工智能,人機對話,都是十分有意思的東西。
    5、堆區(qū)域用于動態(tài)分配的存儲,也就是通過malloc(內(nèi)存分配)函數(shù)獲得的內(nèi)存,并通過指針訪問。堆中所有東西都是匿名的————不能按名字直接訪問,只能通過指針間接訪問。
    被分配的內(nèi)存總是經(jīng)過對齊,以適合及其尺寸的原子訪問。
    堆的末端由一個稱為break的指針來標識。當堆 管理 器需要更多內(nèi)存時,它可以通過系統(tǒng)調(diào)用brk和sbrk來移動指針。一般情況下,不必自己顯示調(diào)用brk,如果分配的內(nèi)存容量很大,brk最終會被自動調(diào)用。