护理教育导论书:为什么?一道C题目大家帮帮忙

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 20:30:00
#include
main( )
{ char b[30],*chp;
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s \n",b);
}
答案CDABC能详细解释下吗?

char b[30],*chp;
此时b=______________________________
strcpy(&b[0],"CH");
此时b=CH0___________________________
strcpy(&b[1],"DEF");
此时b=CDEF0_________________________
strcpy(&b[2],"ABC");
此时b=CDABC0________________________
以上_表示未知内容的字节,0表示'\0'

&b[0]是b第0位的地址
&b[1]是b第1位的地址
&b[2]是b第2位的地址

因为数组是连续分配内存的,所以strcpy会覆盖后面的字节
字符串以'\0'结束