以下程序运行后的输出结果是()
#include<stdio.h>#include<iostream.h>#include<string.h>main(){charch[]="abc",x[3][4];...
#include<stdio.h>
#include<iostream.h>
#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++)
{
cout<<&x[i][i];
}
cout<<endl;
}
答案是abcbcc
我运行了一下,把cout<<&x[i][i];取地址符&去掉运行结果就是abc,不去掉就是答案所给的结果,为什么?请深度解释一下,谢谢! 展开
#include<iostream.h>
#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++)
{
cout<<&x[i][i];
}
cout<<endl;
}
答案是abcbcc
我运行了一下,把cout<<&x[i][i];取地址符&去掉运行结果就是abc,不去掉就是答案所给的结果,为什么?请深度解释一下,谢谢! 展开
1个回答
展开全部
for(i=0;i<3;i++)
{
strcpy(x[i],ch);
}
的作用是把x[3][4]初始化成{"abc", "abc", "abc"},而
for(i=0;i<3;i++)
{
cout<<&x[i][i];
}
输出的其实是&x[0][0],&x[1][1],&x[2][2],&是取地址符,所以输出类型变为char的指针,而结果就是从当前地址开始,输出其后的字符,直到'\0'结束符为止,而'\0'结束符在字符串"abc"声明时,已经默认添加在末尾了,并在调用strcpy时,赋值给了x的三个二维数组(这也是为什么二维数组的元素个数是4而不是3的原因),所以你看到的结果是"abc""bc""c"
而当你去掉&符号,就变成了输出char类型数据,x[0][0],x[1][1],x[2][2],结果也就变成了'a''b''c'
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |