void copy (char *source, char *dest) {
while (*dest++ = *source++);
}
由*source
表示的字符被复制到指向的字段*dest
。对于下一次迭代,每个char指针指向内存中的下一个字段,这是正确的吗?
此循环何时实际停止?我能想到的唯一条件是内存中没有空间,但是函数必须以错误终止,不应该吗?
我对C来说是全新的,请原谅我简单的问题。
答案 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