太原理工大学教务处':下列程序看不懂,看到的请帮忙,谢谢啦!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 09:58:48
#include <stdio.h>
#include <string.h>
main()
{
char b[30],*chp;
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",b);
}

#include <stdio.h>
#include <string.h>

main()
{
char b[30],*chp;
strcpy(&b[0],"CH"); // b[]="CH"
strcpy(&b[1],"DEF");// b[1,2,3]="DEF" ,b[]="CDEF"
strcpy(&b[2],"ABC");// b[2,3,4]="ABC",b[]="CDABC"
/*所以输出是CDABC*/
printf("%s\n",b);
}

结果应该是:CDABC

其实很好理解,如果你明白了 &b[i] 是什么意思的话。

让我们来看看这个&b[i]是什么意思,首先看b[i],就是字符数组的第i个元素,是一个字符类型数据,和 & 结合后就是地址了,所以 &b[i] 就是取到了 b[i] 的地址。

ok,&b[0] 是什么?就是字符数组b的首地址,就是b本身,这个好理解:
strcpy(&b[0],"CH"); 就是往b里面拷贝CH两个字符
strcpy(&b[1],"DEF"); 就是从b[1]开始拷贝DEF三个字符
strcpy(&b[2],"ABC"); 就是从b[2]开始拷贝ABC三个字符

这样,就有答案了:CDABC

如果还不是很明白的话,修改一下程序:
#include <stdio.h>
#include <string.h>
main()
{
char b[30],*chp;
strcpy(&b[0],"CH");
printf("%s\n",b);
strcpy(&b[1],"DEF");
printf("%s\n",b);
strcpy(&b[2],"ABC");
printf("%s\n",b);
}

自己动手编译、执行一下就明白了。

C++的吧
定义了一个数组

同意 TearfulSword

对啊!我也不懂!请大家帮忙解答一下!

=。=不懂。。。。。。。