#include<stdio.h> #include<string.h> void main() { char ch[]="abc",x[3][4]; int i; for(i=0;i<3;i++)

#include<stdio.h>#include<string.h>voidmain(){charch[]="abc",x[3][4];inti;for(i=0;i<3... #include<stdio.h>
#include<string.h>
void 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");
}

为什么答案是abcbcc
展开
 我来答
jayhou1986
2011-01-10 · TA获得超过1510个赞
知道小有建树答主
回答量:586
采纳率:81%
帮助的人:408万
展开全部
你要把这个答案分成三部分来看:abc,bc,c。
当i==0时,输出x[0][0]的地址所在的字符串,明显是abc;
当i==1时,输出x[1][1]的地址所在的字符串,所以跳过a,从b开始输出,即bc;
当i==2时,输出x[2][2]的地址所在的字符串,所以跳过ab,从c开始输出,即c;
一江潜流
2012-03-22
知道答主
回答量:19
采纳率:0%
帮助的人:1.1万
展开全部
我来试解一下,ch[]数组有4个元素(字符串会自动在结尾加'\0'),这样对x[][]数组赋值时过程如下:
1、x[0][0]-x[0][3]=abc,x[1][0]=\0;
2、x[1][0]-x[1][3]=bc,x[2][0]=\0;
3、x[2][0]-x[2][3]=c,x[3][0]=\0;
x[2][3]内存中的后一位为\0(此可能导致程序崩溃,现在假设不崩溃);
由于对字符串进行输出时是以遇到结束标志'\0'时才结束输出的,因此对以下语句:
for(i=0;i<3;i++)
printf("%s",&x[i][i]);
会有如下输出过程(按i排列):
i==0、从x[0][0]开始输出,为:abc
i==1、从x[1][1]开始输出,为:bc
i==2、从x[2][2]开始输出,为:c
解毕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钚祗钚觖
2011-01-10 · 超过32用户采纳过TA的回答
知道答主
回答量:141
采纳率:0%
帮助的人:77.6万
展开全部
输出的&x[i][i]是字符串,它是遇到'\0'结尾的。即分别从a,b,c开始输出,遇到'\0'结束了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式