chapter 2(bugs)

chapter 2(bugs)

知识点:

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. 调用函数分配内存来保存函数的返回值。可以返回字符串常量的指针,静态数组的指针,动态内存指针。

你可能感兴趣的:(chapter 2(bugs))