【发布时间】:2013-07-22 23:02:48
【问题描述】:
我这里有一些 C 代码:
char *cat_copy(char *dest, char *src)
{
char *start = dest;
while (*++dest); //increment unless it can't anymore.
while (*src++)
{
*dest = *(src - 1);
dest++;
}
return start;
}
我必须使用while (*++dest) 来让它工作,而不是while (*dest++)。
我读到:"--" operator in while ( ) loop,在我看来使用while (*dest++) 是有意义的。
为什么它不适用于*dest++?还有*dest++和*++dest有什么区别。
【问题讨论】:
-
在这个while循环中,据我所知,你想检查你是否仍然在字符串的范围内。如果你做dest++,它首先检查他现在所在的位置,然后将其加一,这可能会导致循环内部出现越界错误,但++dest首先增加字符串索引,然后检查它是否仍在边界内。 ..希望我能让你明白
-
我想在两个循环完成后我最终得到同一个字符:'0',我试图记录 printf 到处发生的事情,两个版本都报告说在循环之后我们处于 char '0'所以我很困惑
-
我认为当它是 dest++ 时,你不会以 '0' 结尾,而是在它“之后”一个字符,这是一个无效的内存空间(分段错误)
-
继续增加,除非它不能了?如果没有,编译器会不会认为 while 循环下的行在 while 内?