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

判断题 · 答案 A

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

题目

在 C++ 中,数组名不能改变,数组名不能被赋值。

答案:A

解题思维

答案A。结合题目信息和所学知识分析。

常见错误

仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。

详细解析(节选)

【考点】C++语法基础|数组名本质|常量指针

GESP三级C++模块重点考察基础语法与语义理解。命题人用这道题卡住绝大多数考生的“数组名本质”认知——误将数组名当成普通指针变量,导致后续指针操作出错。

看到题先想“数组名是什么”——它本质是常量指针,指向首元素地址。关键观察:C++规定数组名在表达式中退化(decay)为指针,但数组名本身不是变量。推理链条:因为不是变量,所以不能被赋值;因为地址固定,所以不能改变。这解释了为什么arr = new int[10];是非法的——数组名不是可写的指针。

错误选项B利用“绝对化表述”陷阱——命题人故意用“不能改变”“不能被赋值”这种绝对词,诱导考生误以为存在“数组名可变”的特殊语法。最阴险的细节在于“数组名不是指针变量”这一本质:如果你只背结论、不理解本质,就会掉进“数组名可以像指针一样赋值”的陷阱。如果你只记“数组名是常量”,却不懂“常量指针”的含义,就会误选B。

站在命题人视角:如果把C++换成Python,答案会反转为“错误”——Python中列表名可赋值;若改成“函数参数中数组名能否被修改”,答案仍为“正确”,因为形参是值拷贝。刷到类似题时,先问自己“命题人想考我什么”——是考语言特性差异,还是考数组名本质?如果是“能否通过#define宏改变数组名”,答案是“错误”,因为宏是预处理替换。

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