查找内存 C 中指针的值

Finding the value of pointers in memory C

给定下面的数据集和底部显示的答案 (b36d5c),如何计算 &ptr[3] 的这个值。我只是无法确定它指的是数据集的哪个区域以及如何将大小添加到该区域,但我知道答案是正确的。

sizeof(int) = 4

Data set starting at 0xb36d00 of size 128.
            0xb36d00: 48 6d b3 00 00 00 00 00 4c 6d b3 00 00 00 00 00 Hm......Lm......
            0xb36d10: 50 6d b3 00 00 00 00 00 30 6d b3 00 00 00 00 00 Pm......0m......
            0xb36d20: 04 6d b3 00 00 00 00 00 50 6d b3 00 00 00 00 00 .m......Pm......
            0xb36d30: 18 6d b3 00 00 00 00 00 1c 6d b3 00 00 00 00 00 .m.......m......
            0xb36d40: 48 6d b3 00 00 00 00 00 58 6d b3 00 00 00 00 00 Hm......Xm......
            0xb36d50: 44 6d b3 00 00 00 00 00 4c 6d b3 00 00 00 00 00 Dm......Lm......
            0xb36d60: 00 6d b3 00 00 00 00 00 0c 6d b3 00 00 00 00 00 .m.......m......
            0xb36d70: 68 6d b3 00 00 00 00 00 30 6d b3 00 00 00 00 00 hm......0m......
    int array[] is stored at:        0xb36d00
       int *ptr is stored at:        0xb36d28
short *shortPtr is stored at:        0xb36d28
          int x is stored at:        0xb36d38
        short y is stored at:        0xb36d14
   int ***what is defined by: (int ***)(((int **)0xb36d0c) + 2)

What is the value of &ptr[3]?
b36d5c

int *ptr 据说存储在 0xb36d28。位于 0xb36d28 的内存包含小端顺序的 0x00b36d50(无论指针是四字节还是八字节,它都包含该值,因为接下来的四个字节为零)。因此,ptr 是 0xb36d50。如果指针是四个字节,那么ptr[3]的地址比0xb36d50多3•4个字节,所以是0xb36d5c。 (由于这符合已知答案,我们得出结论指针是四个字节,而不是八个字节。)