请教高手:strcat函数

来源:百度知道 编辑:UC知道 时间:2024/06/25 03:03:25
#include <stdio.h>
#include <string.h>
char a[10];
char b[10];
char c[10];
strcpy(a,"abc");
strcpy(b,"def");
strcpy(c,"ghi");
printf("%s\n%s\n",strcat(a,b),strcat(a,c));

1,请问这个输出的结果为什么会是输出两次“abcghidef”?

printf("%s\n",strcat(a,b),strcat(a,c));

2如果是这样就是输出一次“abcghidef”?
回答出来追加!

明白两点就可以了

1、printf大部分编译器会从右往左求值,求完后才显示

2、strcat的返回值是指向第一个参数的指针

这里,printf("%s\n%s\n",strcat(a,b),strcat(a,c));

首先计算strcat(a,c),反回了指向数组a的首地址的指针,此时a="abcghi";

然后计算strcat(a,b),也返回的是指向数组a的首地址的指针,此时a="abcghidef";

最后printf打印,相当于
printf("%s\n%s\n",a,a);
打印出来的就是两次的abcghidef,还有问题hi我