等級(jí)考試二級(jí)C專家編程讀書筆記(下)

字號(hào):

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