关于c语言的求助,谢谢了

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:02:06
请问这两个程序有什么不同?为什么第二个不能正确运行的?
(1)char *STRCAT(char *s,const char *d)
{ char *p=s;
while(*p) p++;
do *p++ =*d; while(*d++);
return s;
}
main()
{ char t[20]="friend";
printf("%s",STRCAT(t,",how are you?"));

(2)char *STRCAT(char *s,const char *d)
{
while(*s) s++;
do *s++ =*d; while(*d++);
return s;
}
main()
{ char t[20]="friend";
printf("%s",STRCAT(t,",how are you?"));
那么第二个程序如何才能返回正确的结果,在函数中如何处理?
另外,请问那个临时指针p和s的指向是一样的吗?为什么p指向了字符串,而返回s也可以指向那个字符串呢?求解

这么说吧 第一个 用p做临时指针来存放后面附加的串
没有改动s的初始指向

而第二个用了s 改动了s的指向,让s指向了字符串的最后
所以第二个不正常

s的指向问题。第二个s指向最后了。返回后当然不对了

传进指针s来,不能返回也用s。

如果定义变量的时候 不加初始值
运算的时候 会出到想不到的结果
一般都加上