【发布时间】:2014-01-04 18:56:54
【问题描述】:
很抱歉这个措辞不好的问题,我想不出更好的名字。
我正在学习 C,刚刚移到指针上并编写了一个函数 strcat(char *s, char *t),它将 t 添加到 s 的末尾:
void strcat(char *s, char *t) //add t to the end of s
{
while(*s++) //get to the end of s
;
*s--; //unsure why I need this
while(*s++ = *t++) //copy t to the end of s
;
return;
}
现在我的问题是为什么我需要这条线:
*s--;
当我最初添加它时,我认为它是有意义的,直到我完成了代码。
我会认为以下是正确的:
1) 第一个循环不断递增,当 *s 为 0(或空字符)时,它继续前进,所以现在 *s 指向数组的空字符。
2) 所以我要做的就是实现第二个循环。 s 的原始空字符将被 t 的第一个字符替换,直到我们到达 t 的空字符,此时我们退出第二个循环并返回。
显然我遗漏了一些东西,因为没有它,代码就无法工作!!
在第一个循环之后 *s 指向 '\0' 之外的一个位置,但我的问题是为什么?
提前致谢:)
【问题讨论】: