在内存C中查找指针的值

在内存C中查找指针的值,c,pointers,memory,dynamic-memory-allocation,C,Pointers,Memory,Dynamic Memory Allocation,给定下面的数据集和底部显示的答案(b36d5c),如何计算&ptr[3]的该值。我只是很难弄清楚它指的是数据集的哪个区域,以及如何向其中添加大小,但我知道答案是正确的 sizeof(int)=4 从0xb36d00开始的数据集,大小为128。 0xb36d00:48 6d b3 00 00 00 4c 6d b3 00 00 Hm……长。。。。。。 0xb36d10:50 6d B300 00 00 30 6d B300 00 Pm……0米。。。。。。 0xb36d20:04 6d b3 00

给定下面的数据集和底部显示的答案(b36d5c),如何计算&ptr[3]的该值。我只是很难弄清楚它指的是数据集的哪个区域,以及如何向其中添加大小,但我知道答案是正确的

sizeof(int)=4

从0xb36d00开始的数据集,大小为128。 0xb36d00:48 6d b3 00 00 00 4c 6d b3 00 00 Hm……长。。。。。。 0xb36d10:50 6d B300 00 00 30 6d B300 00 Pm……0米。。。。。。 0xb36d20:04 6d b3 00 00 00 50 6d b3 00 00.m……下午。。。。。。 0xb36d30:18 6d b3 00 00 1c 6d b3 00 00.m….m。。。。。。 0xb36d40:48 6d B300 00 00 58 6d B300 00 Hm……Xm。。。。。。 0xb36d50:44 6d B300 00 00 4c 6d b3 00 00 00 Dm……Lm。。。。。。 0xb36d60:00 6d b3 00 00 0c 6d b3 00 00.m……m。。。。。。 0xb36d70:68 6d B300 00 00 30 6d B300 00 hm……0米。。。。。。 int数组[]存储在:0xb36d00 int*ptr存储在:0xb36d28 short*shortPtr存储在:0xb36d28 int x存储在:0xb36d38 短y存储在:0xb36d14 int***定义如下:(int***)((int**)0xb36d0c)+2) &ptr[3]的值是多少? b36d5c
int*ptr
据说存储在0xb36d28。0xb36d28处的内存以小端顺序包含0x00b36d50(无论指针是四个字节还是八个字节,它都包含该值,因为接下来的四个字节为零)。因此,
ptr
是0xb36d50。如果指针是四个字节,那么
ptr[3]
的地址比0xb36d50多3•4个字节,因此它是0xb36d5c。(因为这符合已知的答案,我们得出结论,指针是四个字节,而不是八个。)

在图像中,然后我们发明了文本以及复制/粘贴功能。我们不知道
的大小(int)
,因为您的问题没有指定平台。通用
int
大小为2和4字节。使用sizeof(int)更新。在这种情况下,它是4@Stargateur图像是因为复制和粘贴会严重弄乱格式。@ejscribner:您可以在粘贴的文本周围放置
标记以保持格式。@TurboJ:您不需要
int
的大小
&ptr[3]
ptr+3
,以字节表示,
ptr
加上指向
int
的指针大小的三倍。 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