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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 克莱斯勒 中级黑马   /  2015-9-8 21:21  /  928 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

彬哥说是和二维数组线性什么的有关
12. 若定义如下变量和数组,输出的结果是多少 ( B )
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

6 个回复

正序浏览
翟宇浩 发表于 2015-9-8 22:25
的确是越界的问题,直接访问到下一个了,这里 x[0][2] 和 x[1][0]的值是一样的 ...

多谢..............
回复 使用道具 举报
在Xcode运行一下呗,技术总监就是犀利
回复 使用道具 举报
lionheartism 发表于 2015-9-8 22:01
唯一不好理解就是第一个输出为4,原因就是c语言中是没有下标越界检查,按理说x[0][2]是越界的。
在内存中, ...

明白了,谢谢
回复 使用道具 举报
i=0时为x[0][2],越界到x[1][0]=4,后两个数不用说了吧
回复 使用道具 举报
的确是越界的问题,直接访问到下一个了,这里 x[0][2] 和 x[1][0]的值是一样的
回复 使用道具 举报
唯一不好理解就是第一个输出为4,原因就是c语言中是没有下标越界检查,按理说x[0][2]是越界的。
在内存中,x是按照1 5 4 2 1 6存储的。x[0][2]是首先找到x[0]的地址在偏移两个单位,就跑到了4上了。 画了个图不太标准但是就这么个原理,因为没有越界检查所以似的[0][2]成为可能,跑到了不属于第一行的范围外了

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马