为什么while之后的语句可以实现连接两个字符串,可以讲解一下吗

#include <stdio.h>
#include <string.h>
main()
{
char a[50],b[50];
gets(a);
gets(b);
char *p,*q;
p=a;
q=b;
while (*p++);
*p–;
while (*q)
{
*p++=*q++;
}
*p=’\0’;
printf("%s\n",a);
}

这是指针的应用,把当前值赋值给另一个指针。

*p++ = *q++,相当于

*p = *q;  //字符复制

p = p+1;//目标指针后移一位

q = q+1;//源指针后移一位

代码是否贴错了?*p–;这个应该错了吧。单单就:

while (*q)
{
*p++=*q++;
}

这块代码来说,while条件*q就是取b[i]的值,如果不是0,就执行循环,0也就意味着字符串结束

while代码块中的*p++=*q++,相当于*p =  *q; p++;q++,更进一步就是a[j] = b[i]; i++;j++,就相当于把b第字符串拷贝到a中。

以上,如有帮助,请采纳一下,谢谢。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632