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

Soft question - Memory address of the last byte allocated of an array

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

数组第一个元素的地址是&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) 添加到基地址即可。