GESP 四级 · GESP202609 C++ 四级 第 2 题

选择题 · 答案 B

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

题目

关于下面指针声明的说法,正确的是(  )。

int a = 10;
int b = 20;
const int *p = &a;
答案:B

解题思维

看到 const int *p 先想"指针指向常量",即 *p 不可变,但 p 本身可变。选项逐个验证:A 错在试图修改 *p;C 错在把指针本身也当成常量;D 错在认为指针不能重定向。只有 B 符合指针可赋值的基本规则。

常见错误

选项 C 是最大陷阱,很多考生把 const int *p 误读为"指针和值都不能变",忽略了 const 只修饰被指向对象。选项 D 也常因"p 被初始化为 &a"而误判,其实指针变量本身可被重新赋值。

详细解析(节选)

1. 考纲定位

本题考查 GESP 四级《C++ 程序设计》中"指针基础"模块。命题人卡住的是考生对 const 修饰符作用范围的认知——四级考生普遍知道 const 能修饰变量,但很少意识到它修饰指针时只约束"被指向的值"而非"指针本身"。

2. 解题思维

看到 const int *p = &a; 先拆解语法:const 修饰的是 int,即被指向的对象是常量,*p 不可变;p 作为指针变量,其地址本身可被修改。

逐项验证:

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