GESP 四级 · GESP 202306 C++ 四级 第 9 题

选择题 · 答案 C

← 整套速查表 GESP 四级 全部真题

题目

一个二维数组定义为 int array[5][3];,则 array[1][2] 和 array[2][1] 在内存中的位置相差多少字节?( )

答案:C

解题思维

这题核心就两点:二维数组在内存里是‘按行连续’存的,所以算地址差得用 i×列数 + j 的公式;其次 int 在四级考纲里固定是 4 字节。拿到题先数列数(3),再算两个下标对应的元素偏移差(2 个),最后乘 4 就得字节差了。

常见错误

最容易栽跟头的就是只算出元素差 2 就停手,直接选 A;或者把 int 误当成 2 字节(短整型)选 B,还有人纠结 int 长度不固定选 D。其实 GESP 四级已经把 int 定义为 4 字节,这是硬知识,别被‘无法确定’这种选项忽悠。另外一定要记住数组是行优先存储,列数才是乘法因子,行数是用来遍历的,别搞反了。

详细解析(节选)

【考点】二维数组存储|int 类型大小|内存地址计算

1. 考纲定位

这道题出自 GESP 四级《C++ 语言基础》,专门考查数组的底层存储模型。命题人把 int array[5][3] 放在这里,就是想区分那些只会背语法、不懂内存布局的同学——他们看到下标只会想‘第二行第三列’,却忘了 C++ 二维数组在内存里是按行连续存放的,array[i][j] 距离起点的元素偏移量是 i×列数+j。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断