GESP 四级 · GESP 四级样题(C++ 组) 第 6 题

选择题 · 答案 C

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

题目

如果有如下二维数组定义,则 a[0][3]的值为( )?

int a[2][2] = {{0, 1}, {2, 3}};
答案:C

解题思维

这道题考的是二维数组的声明、初始化以及越界访问的内存行为。别被'越界'两个字吓到,C++里越界不会编译报错,而是直接按内存地址去读,得先算出a[0][3]在内存里对应的是哪个元素的值。

常见错误

很多考生看到'越界'就条件反射选A,觉得会编译出错,其实C++数组越界只是读到了不该读的位置,不会报错;还有人会机械套用公式算偏移量,把a[0][3]当成a[0][3]本身,或者误以为第二维长度是3(因为题目问的是第4列),结果选成1或0,这都是被命题人故意设的坑。

详细解析(节选)

【考点】二维数组定义|数组越界访问|行列索引理解

考纲定位:GESP 四级 C++ 组,题干直接考查数组维度与访问边界。命题人把数组写成 2×2 却问 a[0][3],就是要卡住'第二维长度是 2,列索引只能是 0 或 1'这一基础但易被忽略的细节。

解题思维:看到二维数组先确认行数和列数——本题为 2 行 2 列,因此第二维合法索引范围是 [0,1]。a[0][3] 的列索引 3 明显超出边界,C++ 中不会因此编译错误,而是按内存布局访问越界位置,故数值应取 a[0][3] 的存储值 3。

陷阱拆解:选项 A 把'越界'偷换成'编译错误',利用考生对数组越界行为的模糊认识;选项 B 和 D 分别对应 a[0][1] 和 a[0][0] 的值,是命题人故意设置的常见误选。最阴险的陷阱在于'越界访问是否合法'的绝对化表述,若只背'越界会报错'的结论,就会掉进 A 的坑。

反命题思维:若把数组改成 a[2][3] = {{0,1,2},{3,4,5}},a[0][3] 仍是越界,但 a[0][2] 合法值为 2;若改成 a[3][2],则行索引越界而列索引合法。刷到此类题,先问自己'命题人想考我什么'——是在考维度记忆、越界行为,还是行列混淆。

考频趋势:二维数组与多维数组在题库中共考过 29 题,覆盖 6 个考试级别(2008-2026),其中 GESP 四级就占了 20 题,说明该考点在四级中高频出现。逐年分布为:2008 年 1 题、2011 年 1 题、2014 年 2 题、2019 年 1 题、2022 年 1 题、2023 年 1 题、2024 年 4 题、2025 年 5 题、2026 年 9 题、null 年 4 题,呈现近年明显上升趋势,尤其是 2024-2026 连续三年加码。

预测:基于数据与经验,未来 GESP 四级仍可能继续高频考查二维数组的维度理解与越界行为,命题人大概率会延续'小数组大索引'或'行索引越界'这类陷阱,也可能结合循环嵌套考边界条件。暂无足够依据预测具体年份题型,但建议重点巩固二维数组声明、初始化及越界内存访问机制。

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