1、編譯指令:預(yù)處理沧侥,宏定義可霎。建立自己的數(shù)據(jù)類型:結(jié)構(gòu)體,聯(lián)合體宴杀,動態(tài)數(shù)據(jù)結(jié)構(gòu)癣朗。邏輯運(yùn)算符。函數(shù)遞歸調(diào)用旺罢。
編譯四步驟:
2旷余、預(yù)處理:展開了頭文件;進(jìn)行宏替換扁达。
(Vim指令:只進(jìn)行預(yù)處理即可--- gcc hello.c -o hello.i -E;
查看源代碼?? :$ 直接查看最末行正卧。
查看是否正確執(zhí)行完成: echo $?)
#define R 10??
宏定義:在進(jìn)行預(yù)處理的時候直接進(jìn)行替換,不考慮語法的(不需要分號結(jié)尾)跪解。常用宏的場合:常量炉旷、數(shù)組buffer。
條件編譯功能叉讥。窘行。。
3节吮、typedef?? 關(guān)鍵字抽高,作用是給變量類型起別名。? 需要注意C語法透绩,以分號結(jié)尾。
作用域問題需要注意壁熄。
4帚豪、結(jié)構(gòu)體創(chuàng)建的方式有三種,初始化結(jié)構(gòu)體和訪問結(jié)構(gòu)體成員
5草丧、共用體狸臣,結(jié)構(gòu)體大小問題:
結(jié)構(gòu)體大小:需要進(jìn)行字節(jié)對齊昌执,應(yīng)以空間換取時間的問題烛亦。結(jié)構(gòu)體變量大小的公式:等于最后一個成員的偏移量加上最后一個成員的大小和末尾的填充字節(jié)數(shù)。
結(jié)構(gòu)體字節(jié)對齊準(zhǔn)則:每個成員相對于結(jié)構(gòu)體首地址的偏移量應(yīng)該是當(dāng)前成員所占內(nèi)存的整數(shù)倍懂拾;否則編譯器自動填充字節(jié)煤禽。
同時最終需要判斷目前填充后的字節(jié)數(shù)是不是當(dāng)前結(jié)構(gòu)體最寬的變量類型的整數(shù)倍,否則在最后這個變量后面做字節(jié)填充岖赋。
共用體:最大變量所占大小檬果,初始化的時候只可以聲明一個變量值。