下列关于 C++ 语言中数组的叙述,不正确的是( )。
拿到题先锁定‘数组定义规则’和‘越界是运行时错误’这两条铁律,再看选项是否把‘运行期’偷换成‘编译期’,或者用绝对化表述误导。
很多学生会把‘下标越界’和‘语法错误’混为一谈,认为越界访问一定触发编译报错,从而误选C。还有的会被‘可能’二字绕晕,觉得D选项‘程序依然可能正常结束’太玄乎,不敢选。其实C++从不检查数组边界,越界只是运行时未定义行为,编译阶段完全合法;而D的‘可能’恰恰成立,因为越界后若没触发异常或写死内存,程序照样能跑完。
【考点】数组定义规则|运行时错误 vs 编译时错误|下标语义
1. 考纲定位 GESP 三级《C++ 语言程序设计》模块,考纲明确要求掌握数组定义的合法性(非负整数长度)。命题人想卡住‘数组大小必须≥1'的直觉误区——这是绝大多数考生凭生活经验会有的错误认知。
2. 解题思维 看到数组题先想三点:定义合法性(长度非负)、下标从0起始、越界是运行时错误。A符合标准,B自然错(-1不合法),C错在把运行时错误当成编译错误,D错在忽略了内存布局的偶然性。
3. 陷阱拆解 错误选项C利用‘编译期检查’思维定势——C++ 不检查数组边界,只检查语法。若学生把‘越界’等同于‘非法语法’,就会直接选C。陷阱在于‘越界访问’本身是合法语法,只是运行时行为不确定。D选项阴险在‘可能’二字——只要越界位置恰好落在合法内存且未触发未定义行为,程序就能继续跑完。
4. 反命题思维 若把‘C++'改成‘C',答案会变(C 允许负数下标但越界仍是运行时错误);若把‘数组’改成‘指针’,越界同样不编译报错。这类题的本质是区分‘语法错误’和‘运行时错误’,刷到类似题先问:‘越界是编译期还是运行期?’
5. 考频趋势 数组与下标越界是C++基础语法高频考点。在‘基础语法’类目中,该知识点近年考频持续攀升:2023年287题、2024年413题、2025年401题,说明命题人持续强化对‘运行时错误’与‘编译时错误’区分的考查。在‘C++程序设计’类目中,2024年103题、2025年72题也显示该考点热度不减,且GESP三级作为入门赛,对基础概念的辨析要求更高。
6. 预测 基于数据,未来GESP三级仍会高频出现数组定义合法性与越界性质的辨析题,可能结合‘指针’‘引用’等概念增加干扰项;也可能在NOIP初赛中出现类似‘编译期 vs 运行期’的判断题。暂无足够依据预测具体题型变化,但‘运行时错误’这一核心概念必将继续作为必考点。