海拉尔到呼伦湖:求教一道C语言的题目

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 21:36:35
以下程序运行后的输出结果是 abcbcc
#include "string.h"
main()
{
char ch[]="abc",x[3][4]; int i;
for(i=0;i<3;i++) strcpy(x[i],ch);
for(i=0;i<3;i++) printf("%s",&x[i][i]);
printf("\n");
}

没有错啊
由于x[3][4]是以字符定义的数组
在内存中的排列为
x[0][0] x[0][1] x[0][2] x[0][3]
x[1][0] x[1][1] x[1][2] x[1][3]
x[2][0] x[2][1] x[2][2] x[2][3]
按照for(i=0;i<3;i++) strcpy(x[i],ch);语句
i=0
x[0][0]='a' x[0][1]='b' x[0][2]='c' x[0][3]='\0'
i=1
x[1][0]='a' x[1][1]='b' x[1][2]='c' x[1][3]='\0'
i=2
x[2][0]='a' x[2][1]='b' x[2][2]='c' x[2][3]='\0'

按照
for(i=0;i<3;i++) printf("%s",&x[i][i]);输出时
由于输出的是字符串,那么就是输出到'\0'为止
&代表的是地址

那么printf("%s",&x[0][0]);输出从x[0][0]地址开始到第一个'\0'为止
那么就是abc

&x[1][1]开始到'\0'为bc

&x[2][2]开始到'\0'为c