GESP 四级 · GESP 202503 C++ 四级 第 3 题

选择题 · 答案 B

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

题目

执行下述代码后,变量 a 的值为( )。

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

解题思维

答案B。指针变量存储的是内存地址。定义指针时必须指定指向的类型(如int*指向int)。nullptr表示空指针。

常见错误

指针必须先初始化再使用。nullptr是空指针常量,不指向任何有效内存。解引用空指针导致崩溃。

详细解析(节选)

【考点】指针基础|解引用操作|地址传递

1. 🎯 考纲定位 本题考查《GESP 大纲》中级阶段"指针基础"模块,命题人专卡考生对"指针与变量关系"的模糊认知。四级阶段强调指针是"地址容器"而非"变量本身",这道题就是检验你是否真正理解*p等价于a。

2. 🧠 解题思维 看到int a = 10;先明确 a 的内存地址已分配;int* p = &a;让 p 存储 a 的地址;*p = 20;解引用即直接修改 a 的值。核心观察:指针只是地址的别名,通过它操作就是操作原变量。通法:任何*ptr = x都等价于原变量 = x,与指针名无关。

3. 🪤 陷阱拆解 A 选项(10)是误以为*p只读不改,混淆了赋值与取值;C 选项(随机值)源于对野指针的过度联想,但此处 p 合法指向 a;D 选项(编译错误)完全脱离语法事实——指针声明与赋值均合规。命题人利用"指针神秘感"制造选择干扰,若只背结论不追本质,必选错。

4. 🔄 反命题思维 若把*p = 20;改为*p = *p + 5;,答案会变为 25;若定义int b = *p;再问 b 的值,则是 20。刷题时先自问:这题想考指针的哪一层本质?是地址传递、解引用、还是别名关系?

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