所以我有一个多嵌套的数组(指针使用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=3
,y=2
处的片的字节偏移为208。
关于c - 查找多嵌套数组的下一个内存变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50072828/