知识点:
1.malloc(strlen(str)) 几乎肯定是错误的。应该是 malloc(strlen(str)+1)。
2.NUL用于结束一个ACSII字符串。NULL表示什么也不指向。空指针。
3.switch中default写成defau1t的错误。(能够通过编译)。
break会跳出最近的那层循环,或者switch语句
4.ANSI C 相邻的字符串常量
会被自动合并成一个字符串的约定。
printf("a second favorite children's book"
"is 'yitiantulong' "
);
编译时候会自动合并,除了最后字符串外,每个字符串结尾的‘\0’会被删除。
bug:
char *resourse[]={
"big disk",
"color" //color 之后没有写逗号,那么会和mouse连接在一起。
"mouse",
};
5.
代码第一次执行时候行为,与以后执行的不同。initializer( char *str)
{
static char separator='';
printf(" %c %s \n", separator, str);
separator=',';
}
非常简便,比起其他的方法。
6.extern用于函数定义,表示全局可见。(属于冗余)
extern用于标量,表示在其他地方定义。
7.x=f() * g();
f() 与个g() 调动顺序不确定。
8.空格
\newline 与 \ newline意义不同。
9.
调用函数分配内存来保存函数的返回值。可以返回字符串常量的指针,静态数组的指针,动态内存指针。