32 位 数组 起始地址?

来源:百度知道 编辑:UC知道 时间:2024/06/26 05:04:53
有这么一道题:
假设在32位计算机系统中,数组int A[5][8][10] 的内存起始地址为0x100 , 那么A[4][5][6]的内存起始地址为______?

我假设他为以行存储优先,那么32位计算机系统中数组的一个元素要站几个字节呢?对地址怎么算呢?
首先感谢感谢回答,再问一句,因为是起始地址,那么在最后的0--〉6中,最后的地址大家就算成了A[4][5][7]的起始地址,是否应该再减去一个4???
还请高手赐教!

补充:

你不需要考虑0->6,就考虑0->1。
假如a[0]的地址是0x00,你认为a[1]的地址是0x00+1*0x04-0x04么?显然不需要减。

-----------------------------

所谓32位计算机是指该计算机的机器字长为32位(4字节),整型变量长度一般等于机器字长,因此也是4字节。

A[0][0][0]的地址为0x0100,则A[0][0][1]的地址为0x0104,以此类推。
A[4][0][0]的地址为0x0100+4*8*10*0x0004=0x0600
A[4][5][0]的地址为0x0600+5*10*0x0004=0x06C8
A[4][5][6]的地址为0x06C8+6*0x0004=0x06E0

结果为0x06E0,因为是32位计算机,地址应写作:0x000006E0。

在32位计算机系统中一个int占4个字节,
因此偏移地址的计算公式如下:
(4*8*10+5*10+6)*4=1504
换算成16进制就是0x5E0,因此A[4][5][6]的内存起始地址为0x100+0x5E0=0x6E0

厉害。