黑马程序员技术交流社区
标题:
数组问题,求解,给出解题步骤,谢谢
[打印本页]
作者:
翟宇浩
时间:
2015-8-28 09:36
标题:
数组问题,求解,给出解题步骤,谢谢
若定义如下变量和数组,输出的结果是多少
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]呢,我有点晕
作者:
翟宇浩
时间:
2015-8-28 09:37
我在xcode中单独输出 x[0][2] 时提示:
Array index 2 is past the end of the array (which contains 2 elements)
难道是越界访问到下一行了?
作者:
庞佳星
时间:
2015-8-28 10:53
是越界了!!你可以把i<3改成i<2 然后把x[i][2-i]改成x[i][1-i]试试
作者:
wowthe1st
时间:
2015-8-28 12:52
421,虽然越界了,但是不会出错,而且越界后地址也在数组地址范围内
作者:
wowthe1st
时间:
2015-8-28 12:53
这样看也许会感觉不好理解,你把p[1][1]换成指针形式 *(*(p+1)+1)就很好理解了
作者:
小笼包
时间:
2015-8-28 17:00
好像还没看到的
作者:
tangbinbin
时间:
2015-8-29 08:03
越界以后继续访问后面的元素,,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2