二维数组的内存存放问题

[复制链接]
查看11 | 回复5 | 2012-12-14 22:34:18 | 显示全部楼层 |阅读模式
是连续的。c跟c++内存上看都只有一维的数组,也就是,只要你声名了一个数组,那么这个数组的所有元素都是在内存中顺序存放的。所谓的多维数组只是一种逻辑概念或者处理数据的组织形式。比如 数组 Int arr[3][3][3]这个数组对于编译器来说就是一个容量为3*3*3的一维数组。之所以分为三个维度,只是把这27个数据进行了分组,便于我们的使用。注意区别定义数组的时候维度里面的数值体现的是组织形式,当我们使用的时候,维度里面要体现数据的位置,比如arr[2][1][0]每个维度里面的值只能取0-2来表示位置。...
回复

使用道具 举报

千问 | 2012-12-14 22:34:18 | 显示全部楼层
其实不管是一维还是二维在内存中都是按一维存放的,二维只是逻辑上的,只是为了逻辑上处理方便...
回复

使用道具 举报

千问 | 2012-12-14 22:34:18 | 显示全部楼层
因为你的a[m][n]有12个元素,所以end-begin(即p-a[0])肯定恒为11。因为指针相减的结果是元素差而不是地址差。比如若有inta[3]={1,2,3};则&a[1]-&a[0]=1,而它们的地址值却相差4。在内存中无论几维数组,都是按一维数组存放的。比如二维数组,第一行最后一个元素后就紧接着第二行的第一个元素,依此类推。这也是多维数组都...
回复

使用道具 举报

千问 | 2012-12-14 22:34:18 | 显示全部楼层
是连续的啊,二维和一维一样,一个循环也可以全部输出来。...
回复

使用道具 举报

千问 | 2012-12-14 22:34:18 | 显示全部楼层
亲,第一行完了,就第二行呀,,,3行3列的也就是9个元素,按行列顺序存的,,a[1][2]是第六个元素,a[2][0]是第七个元素,...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行