求C不语言二维数组入门的一个问题。。这句话里“元素a[0][4]等价于a[1][1]”这是为什么呀?

[复制链接]
查看11 | 回复4 | 2011-1-14 17:33:34 | 显示全部楼层 |阅读模式
"。。。a数组的6个元素分别为:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、这些都是合法的引用;元素a[0][4]等价于a[1][1],也是合法的引用;而a[1][4]则是越界访问。"
求C不语言二维数组入门的一个问题。。这句话里“元素a[0][4]等价于a[1][1]”这是为什么呀?而“a[1][4]则是越界访问”这又是为什么呀,求解释啊!!!
元素a[0][4]等价于a[1][1]????这是个二行三列的数组,怎么为为出现“4”啊,救命啊

回复

使用道具 举报

千问 | 2011-1-14 17:33:34 | 显示全部楼层
因为C编译软件给数组a[][]分配内存是以a[0][0]为首地址来分配的。a数组时6个元素系统就分配12位的内存给它。当调用时系统是不会分辨你写的对错,只要是a数组那就从a[0][0]地址开始,a[0][4]就是从a[0][0]+4就是a[1][1]咯。而a[1][4]超出了分配的地址自然是越界访问咯。这问题我也是第一次见。很不错的一个问题。不过记得系统是如何分配内存和调用内存数据的原理应该都能分析出来的。我也是个新手,有说错的地方请指教!
回复

使用道具 举报

千问 | 2011-1-14 17:33:34 | 显示全部楼层
c语言的存储地址是依次排列的你这是一个三行三列的元素!!下标是不能超过2的元素a[0][4]等价于a[1][1你的这种思想就是错误的,你自己可以上级调试!!!即使编译能通过也是无法打印预期结果的!写程序还是规范一点好!!!!!所有的问题要有原理支持~实际操作为依据的!!!!
回复

使用道具 举报

千问 | 2011-1-14 17:33:34 | 显示全部楼层
是这样的。譬如说 你的a数组元素为{0,1,2,3,4,5}那么a[0][4]与a[1][1]指向的元素是一样的是4,系统默认一个元素为5,没定义的不算。但是a[1][4]呢?你数数你定义了没有了。因为没有定义所以出不来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行