地址偏移量问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:05:42
对于二维数组a[1..4,3..6],设每个元素占两个存储单元,若分别以行和列为主序存储,则元素a[3,4]相对于数组空间起始地址的偏移量分别是_(44)_和_(45)_。
我要计算方法或者公式

二维数组a[1..4,3..6]这样的:
a13,a14,a15,a16,
a23,a24,a25,a26,
a33,a34,a35,a36,
a43,a44,a45,a46,
以行为主序存储,存储顺序如下:
a13,a14,a15,a16, a23,a24,a25,a26, a33,a34,a35,a36,a43,a44,a45,a46,
所以,a[3,4]相对于数组空间起始地址的偏移量为((3-1)*(6-3+1)+(4-3))*2=18

同理,以列为主序存储,存储顺序如下:
a13,a23,a33,a43, a14,a24,a34,a44, a15,a25,a35,a45,a16,a26,a36,a46,
所以,a[3,4]相对于数组空间起始地址的偏移量为((4-3)*(4-1+1)+(3-1))*2=12

a[n,m] n和m都是从1开始,而且m是1到M之间的数。
这样的话a[n,m]的存储序号N可以计算得出:(n-1)*M+m=N
因此它的存储位置就是 2*N 和 2*N+1