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