所以我有一个多嵌套的数组(指针使用32位)

该应用程序将变量定义为

字符魔术球[8] [8] [8]

(gbp)p&magic&ball

如果char * [8] [8] [8]的基地址为0xffffd448,那么magicball [3] [2]的地址是什么

我使用公式地址=基地址+ N(i * C + k)

=基地址+ 4(3 * 8 + 2)

=基地址+ 104(十进制)

=基地址+ 68(十六进制)。

正确答案是基地址+ 208(十进制)(为什么是208而不是104)
来源:http://www.bruintestbank.com/computer-science/cs-33-1/
第二页

最佳答案

magicball[3][2]的地址应位于偏移量(2*8)+(3*64),即208

如果我们认为您的数组由x,y,z标注,则z方向上的每一步都会使您移动sizeof(char)(即1)个字节。 y方向上的每一步都会使您沿z方向(即8)移动元素个数。 x方向上的每一步都会使您在每个y / z平面中的元素总数(即8 * 8 * sizeof(char))字节中移动。将所有内容放在一起,得出x=3y=2处的片的字节偏移为208。

关于c - 查找多嵌套数组的下一个内存变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50072828/

10-09 01:59