这个 C 语言复制函数如何结束循环?

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

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

这个循环什么时候实际停止?我能想到的唯一条件是没有剩余的内存空间了,但那么函数必须以错误终止,不是吗?

我完全是C语言的新手,请原谅我的简单问题。


当它遇到一个空结束符 - 0 时,请返回已翻译的文本。 - Daniel A. White
字符\0可以隐式转换为整数0,被视为false。类型为a = b的表达式将计算为b - Tobias Brandt
3个回答

3

char是整型。以下是整型的条件解释:

 0 -> false
 Anything else -> true

在C中,“字符串”是以null结尾的(意思是0'\0'),当它到达字符串末尾时便停止。


你的等价循环不是等价的。 - Paul R
是的,我认为这可能只会让问题更加混乱。 - Paul R

3

一个赋值的"结果"就是右边的值。所以,x=1; 事实上是有一个返回值的;在这种情况下,返回的值是 '1'。

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


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接