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

选择题 · 答案 A

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

题目

一个数组定义为 int a[5] = {1, 2, 3, 4, 5};,一个指针定义为 int *p = &a[2];,则执行 a[1] = *p; 后,数组 a 中的值会变为( )。

答案:A

解题思维

这题考指针和数组的等价关系。拿到题先别急着看选项,把指针 p 指向的具体元素值算出来,再想清楚赋值操作到底是改谁,最后代入数组下标变化即可。

常见错误

最容易掉进的坑是混淆'指针存的是地址'和'指针存的是值'。很多考生看到 p=&a[2] 就以为 p 里装着地址 3,然后下意识把地址赋给 a[1](选项 B 的陷阱),或者误以为 *p 取的是地址而非元素值。另一个高频错误是下标越界或偏移算错,比如把 p[1] 当成 a[1],其实 p[1] 对应的是 a[3]。

详细解析(节选)

【考点】指针与数组关系|数组元素引用|赋值运算

考纲定位 GESP 四级 C++ 大纲"指针"模块明确要求掌握指针作为变量引用、数组元素引用。命题人放这道题,就是卡住那些只背"指针是地址"却不会用指针取值赋值的考生——这是四级区分度最高的考点之一。

解题思维 看到 p = &a[2],立刻识别:p 不是指向整型变量,而是指向数组元素,因此 *p 就是取 a[2] 的值(即 3)。执行 a[1] = *p 本质是把 3 赋给 a[1]。原 a[1]=2,现改为 3,数组变为 {1, 3, 3, 4, 5}。这一类题通法:指针作为数组元素引用时,*p 取值、p = &a[i] 绑定、a[i] = *p 赋值,三步走。

陷阱拆解

反命题思维 如果把 a[1] = *p 改成 a[1] = p,会考查指针赋值合法性,属于类型检查陷阱;如果改成 a[1] = p[1],会考查指针索引运算,属于数组偏移理解。刷到类似题时,先问自己"指针到底指向什么、*p 取的是值还是地址、赋值是修谁"。

考频与趋势 指针相关题目在题库中占比极高,"复合类型"共 146 题,"一维数组"更达 224 题,覆盖从 2008 到 2026 的所有年份。近五年趋势明显:2023 年一维数组考 27 题,2024 年飙升至 48 题,2025 年达到 55 题,2026 年更是 59 题,呈现逐年递增态势。GESP 四级作为基础级别,一维数组考 42 题,指针作为核心考点必然高频出现。

预测 基于数据,未来 GESP 四级及更高级别考试中,指针与数组结合的题型不仅不会减少,反而可能增加变式,如考察指针运算、多维数组指针、指针修改数组元素后的输出等。暂无足够依据预测具体年份,但建议重点复习指针取值与数组下标偏移的等价转换。

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