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

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

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

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

我对C完全不熟悉,请原谅我简单的问题。

char是不可或缺的类型。 积分类型按以下方式解释为条件:

  0 -> false Anything else -> true 

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

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

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

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