A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

若定义如下变量和数组,输出的结果是多少
int x[3][2]={1,5,4,2,1,6};
int i;
for(i=0;i<3;i++)
printf("%d",x[i][2-i]);
return 0;


A. 2 1 6         B. 4 2 1            C. 4 1 2            D. 5 4 2

我的理解是:
int x[3][2]={1,5,4,2,1,6}; 相当于  int x[3][2]={{1,5},{4,2},{1,6}};
当i为0时,输出  x[0][2], 但是这个数组是  3行2列 ,即
1  5   下标为 x[0][0]  x[0][1]
4  2   下标为 x[1][0]  x[1][1]
1  6   下标为 x[2][0]  x[2][1]
怎么有 x[0][2]呢,我有点晕

6 个回复

倒序浏览
我在xcode中单独输出 x[0][2] 时提示:
Array index 2 is past the end of the array (which contains 2 elements)
难道是越界访问到下一行了?
回复 使用道具 举报
是越界了!!你可以把i<3改成i<2  然后把x[i][2-i]改成x[i][1-i]试试
回复 使用道具 举报
421,虽然越界了,但是不会出错,而且越界后地址也在数组地址范围内
回复 使用道具 举报
这样看也许会感觉不好理解,你把p[1][1]换成指针形式 *(*(p+1)+1)就很好理解了
回复 使用道具 举报
好像还没看到的
回复 使用道具 举报
越界以后继续访问后面的元素,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马