GESP 三级 · GESP 202603 C++ 三级 第 16 题

判断题 · 答案 B

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

题目

定义 int arr[5] = {1,2,3}; ,则 arr[3] 的值为 $0$,arr[5] 是合法下标。

答案:B

解题思维

答案B。定义数组时[]内必须是常量表达式(可用char常量作为下标,因为char本质是整数)。int c[3.0]不合法。

常见错误

C++不允许对数组直接赋值(如int a[3]=b不合法),但可以逐个赋值元素。

详细解析(节选)

【考点】数组定义|数组越界|初始化列表

定义int arr[5] = {1,2,3};时,数组大小为5,下标范围0~4。未显式赋值的元素自动初始化为0,故arr[3]=0正确;但arr[5]已越界,C++不检查边界,访问arr[5]是未定义行为,命题人用"合法下标"测试学生是否真正理解数组索引从0开始。

常见陷阱:误以为arr[3]是未初始化(实则已归零)、误把数组大小5当成最大下标(应为4)、误认为arr[3]的值是3(实际是下标)。命题人特意用"合法下标"这种绝对化表述,诱导只背结论不推敲边界的考生选A。

若将数组大小改为3,则arr[3]越界;若初始化改为{1,2,3,4},则arr[3]为4。这类题永远要问自己:"下标是从0开始还是1开始?数组大小和下标最大值的关系是什么?"

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