#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 展开
#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 展开
3个回答
展开全部
我来试解一下,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
解毕。
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
解毕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出的&x[i][i]是字符串,它是遇到'\0'结尾的。即分别从a,b,c开始输出,遇到'\0'结束了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询