这个C复制函数如何退出它的循环?

时间:2014-11-20 22:57:00

标签: c

void copy (char *source, char *dest) {
    while (*dest++ = *source++);
}

*source表示的字符被复制到指向的字段*dest。对于下一次迭代,每个char指针指向内存中的下一个字段,这是正确的吗?

此循环何时实际停止?我能想到的唯一条件是内存中没有空间,但是函数必须以错误终止,不应该吗?

我对C来说是全新的,请原谅我简单的问题。

3 个答案:

答案 0 :(得分:3)

作业的“结果”是右手值。所以x=1;实际上返回一个值;在这种情况下,'1'。

您的代码会复制字符,直到它遇到source字符串末尾的终止0。

答案 1 :(得分:3)

char是完整的类型。积分类型按以下方式解释为条件:

 0 -> false
 Anything else -> true

由于C中的“字符串”在到达字符串末尾时以空值终止(意味着0'\0'),因此它会停止。

答案 2 :(得分:1)

您对副本的解释是正确的。当dest指向的是零时,循环停止,即' \ 0'字符。见http://en.wikipedia.org/wiki/Null-terminated_string