软问题-分配给数组的最后一个字节的内存地址

时间:2019-06-05 21:35:08

标签: variables hex memory-address

变量int A[10]是从十六进制地址DDDD04BA分配的。我想找到分配给数组的最后一个字节的十六进制地址。为什么我们从中减去1: DDDD04BA+28=DDDD04E2DDDD04E2-1=DDDD04E1?另外,为什么A[8]的第一个字节的十六进制地址为DDDD.04BA+32=DDDD04DA,而不应该是+36,因为它以A[0]开头?

1 个答案:

答案 0 :(得分:0)

数组第一个元素的地址为&A[0]=DDDD04BA
元素A [1]的地址是通过将该值加4来获得的。
元素A [i]的地址为&A [0] + 4 * i
最后一个元素A [9]位于地址&A [0] + 4 * 9 =&A [0] + 36 =&A [0] + 0x24

A [9]由4个字节组成。首先是地址&A [9],最后是地址&A [9] +3
我们得到的结果是0xDDDD04BA + 0x24 + 3 = DDDD04E1

出于相同的原因,&A [8] =&A [0] + 8 * 4 = 0xDDDD04DA

不要忘记索引为0的数组,因此要查找元素i的地址,只需将i * sizeof(array_element)添加到基地址。