知識點(diǎn):
1.malloc(strlen(str)) 幾乎肯定是錯(cuò)誤的。應(yīng)該是 malloc(strlen(str)+1)。
2.NUL用于結(jié)束一個(gè)ACSII字符串。NULL表示什么也不指向。空指針。
3.switch中default寫成defau1t的錯(cuò)誤。(能夠通過編譯)。
break會跳出最近的那層循環(huán),或者switch語句
4.ANSI C 相鄰的字符串常量
會被自動合并成一個(gè)字符串的約定。
printf("a second favorite children's book"
"is 'yitiantulong' "
);
編譯時(shí)候會自動合并,除了最后字符串外,每個(gè)字符串結(jié)尾的‘\0’會被刪除。
bug:
char *resourse[]={
"big disk",
"color" //color 之后沒有寫逗號,那么會和mouse連接在一起。
"mouse",
};
5.
代碼第一次執(zhí)行時(shí)候行為,與以后執(zhí)行的不同。initializer( char *str)
{
static char separator='';
printf(" %c %s \n", separator, str);
separator=',';
}
非常簡便,比起其他的方法。
6.extern用于函數(shù)定義,表示全局可見。(屬于冗余)
extern用于標(biāo)量,表示在其他地方定義。
7.x=f() * g();
f() 與個(gè)g() 調(diào)動順序不確定。
8.空格
\newline 與 \ newline意義不同。
9.
調(diào)用函數(shù)分配內(nèi)存來保存函數(shù)的返回值。可以返回字符串常量的指針,靜態(tài)數(shù)組的指針,動態(tài)內(nèi)存指針。