【发布时间】:2011-07-24 12:51:05
【问题描述】:
通过 K&R,我看到了一个函数 strcopy 的以下代码 sn-p,它将一个字符数组复制到另一个。
如果t是指向第一个数组的指针,s是指向t要复制到的数组的指针,代码为:
void strcopy(char *s, char *t){
while(*s++=*t++)
;
}
我对 while 循环感到困惑。我undersatnd内部条件t被复制到s,但我不明白这里正在测试什么条件。 *t++ 什么时候会是假的(或零)?大概,当字符串结束时。我们可以通过检查指向的字符是否为'\0'来测试字符串是否完成。 K&R 说了这么多。但是这本书相当愉快地指出,这个测试是没有必要的。所以我想知道这里正在测试什么?
【问题讨论】:
-
这样的经典代码。但是如果你写这样的东西,也许你的同事会抱怨......将代码扩展到几行将有助于轻松阅读。编译器会为你做优化。