第三章讲的是流程控制,对于经常使用类C语言的人来说,这章的内容应该是烂熟于胸。其中引起我注意的地方有下面几点:
-
给你一个字符串,让你写一个小程序把它反转,大概很多人在应聘时都遇到过类似的小问题。作者在这里给出了他的实现,这段程序写得干净漂亮,让我忍不住把它贴在这里:
#include <string.h>
/* reverse: reverse string s in place */
void reverse(char s[])
{
int c, i, j;
for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
之后,作者为了说明逗号运算符的用法,又给出了一个更简洁的实现:
for (i = 0, j = strlen(s)-1; i < j; i++, j--)
c = s[i], s[i] = s[j], s[j] = c;
用这段实现,整个函数体只有三行,而且逻辑清晰,可读性好。如果应聘时写出这样的代码,相信一定能给面试官留下好的印象。
-
continue用在while和for循环中效果有所差别。用在while循环中,控制直接转到下一个迭代的条件判断;而用在for循环中,先要执行自增语句再转到下一次的条件判断。
-
尽管作者建议尽量少使用goto语句,他还是给出了goto语句适用的场合。一个常见的例子是,要跳出嵌套很深的程序结构,如:
for ( ... )
for ( ... ) {
...
if (disaster)
goto error;
}
...
error:
/* clean up the mess */