二维数组是如何存储的

设W为一个二维数组,行下标i从0到7 ,列下标j从0到3 ,若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为________。
为什么?我知道答案哦

二维数组A[m][n]可以视为由m个行向量组成的向量,或者是由n个列向量组成的向量。

由于计算机的内存是一维的,多维数组的元素应排成线性序列后存入存储器。数组一般不做插入和删除操作,即结构中元素个数和元素间的关系不变。所以采用顺序存储方法表示数组。

1、  è¡Œä¼˜å…ˆå­˜å‚¨

将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。

【例】二维数组A[m][n]按行优先存储的线性序列为:

A[0][0]、A[0][1]…A[0][n]、A[1][1]、A[1][1]…A[1][n]…A[m][n]、A[m][1]…A[m][n]

在PASCAL和C语言中数组按行优先顺序存储。

2、  åˆ—优先存储

将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量后面。

【例】二维数组A[m][n]按列优先存储的线性序列为:

A[0][0]、A[1][0]…A[m][0]、A[0][1]、A[1][1]…A[m][1]…A[m][1]、A[0][n]…A[m][n]

ORTRAN语言中,数组按列优先顺序存储。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-26
前面一共需要6*4+3个数据,每个数据4个字节,怎么也得需要4*27个字节,这个地址我就不清楚了,一个地址是2个字节?可是要弄到108还是有点难度

6*4+3=27
100+27(?)=127
第2个回答  2013-03-24
答案应该是:100+(6*4+3)*4=100+108=208
第3个回答  2011-12-26
6*4+4=28
100+28=128追问

答案是108,是答案的错吗?

追答

一行4个元素
一列8个元素
最多是4*8=32个元素
最后一个元素的地址是100+32=132
绝对答案错

本回答被提问者采纳
第4个回答  2011-12-26
100+ (6+1)*3+3追问

答案是108,给你原题: 设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用___128____个字节。W中第6 行的元素和第4 列的元素共占用_____44____个字节。若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为_______108___。

相似回答