假定整型是 $32$ 位,对一个 $2$ 行 $3$ 列的二维整数数组 array,假设数组第一个元素在内存中的地址为 0x7ffee4065820,则第 $2$ 行第 $2$ 个元素的地址 &array[1][1] 为( )。
int array[2][3] = {
{0, 1, 2},
{3, 4, 5}
};答案D。二进制转十进制:整数部分按权展开,小数部分乘以2的负幂次。
二进制小数转十进制:小数点后第一位是2⁻¹=0.5,第二位是2⁻²=0.25。容易忽略负幂次。
【考点】二维数组内存布局|行优先存储|地址计算
1. 🎯 考纲定位(考点定位)
2. 🧠 解题思维(拆解与通法)
&array[1][1] 先确定它在内存中的位置:第 2 行第 2 列&array[1][1] = 0x7ffee4065820 + 0x16 = 0x7ffee4065830&arr[r][c] = &arr[0][0] + (r×cols + c)×sizeof(int),适用于所有行优先二维数组3. 🪤 陷阱拆解(命题人的套路)
&array[0][1] 当成目标,把"第 2 行"错读成"第 2 个元素"1×cols + 1 = 4 个元素却用 8 字节偏移4. 🔄 反命题思维(教练升华)
&array[1][1] 的偏移量会变成 (1×2 + 1)×4 = 0x18