一个二维数组定义为 int array[5][3];,则 array[1][2] 和 array[2][1] 在内存中的位置相差多少字节?( )
这题核心就两点:二维数组在内存里是‘按行连续’存的,所以算地址差得用 i×列数 + j 的公式;其次 int 在四级考纲里固定是 4 字节。拿到题先数列数(3),再算两个下标对应的元素偏移差(2 个),最后乘 4 就得字节差了。
最容易栽跟头的就是只算出元素差 2 就停手,直接选 A;或者把 int 误当成 2 字节(短整型)选 B,还有人纠结 int 长度不固定选 D。其实 GESP 四级已经把 int 定义为 4 字节,这是硬知识,别被‘无法确定’这种选项忽悠。另外一定要记住数组是行优先存储,列数才是乘法因子,行数是用来遍历的,别搞反了。
【考点】二维数组存储|int 类型大小|内存地址计算
这道题出自 GESP 四级《C++ 语言基础》,专门考查数组的底层存储模型。命题人把 int array[5][3] 放在这里,就是想区分那些只会背语法、不懂内存布局的同学——他们看到下标只会想‘第二行第三列’,却忘了 C++ 二维数组在内存里是按行连续存放的,array[i][j] 距离起点的元素偏移量是 i×列数+j。