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

选择题 · 答案 B

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

题目

一个变量定义为 int *p = nullptr;,则下列说法正确的是( )。

答案:B

解题思维

看到 int *p = nullptr; 先别急着看 p 指向哪,直接看 p 左边那个 int *是什么——它定义了 p 这个变量的类型。记住:指针变量的类型永远是它所指向的数据类型,而不是指针本身。

常见错误

很多学生会把‘指针类型’和‘指向类型’搞混,觉得 p 是个指针,它的类型就是‘指针类型’,从而误选 A。其实 C++ 里 int *p 的意思是‘p 是一个指向 int 的指针’,p 本身存的是地址,但它的类型定义是 int*。另外,选项 C 说 nullptr 是随机地址,这完全是概念错误,nullptr 代表空指针,不指向任何有效内存,更谈不上随机。选项 D 说访问会编译错误,这也是常见的误区,解引用空指针是运行时错误,编译器只管语法不管运行时行为。

详细解析(节选)

【考点】指针定义与类型语义

1. 命题视角 GESP 四级把这道题放在选择题里,核心就是要卡住‘指针变量类型’与‘指向类型’这两个概念的区分。命题人故意把 int *p 拆成选项 A 和 B,就是为了看学生能不能准确读出声明:p 是一个变量,它的类型是 int*,它指向的数据类型是 int。

2. 概念澄清 在 C++ 中,指针变量的类型由‘基类型’决定。int *p = nullptr; 里,p 是变量名,*p 表示 p 指向的数据,int 就是基类型。因此 p 的类型是‘指向 int 的指针’,它指向的数据类型是 int。nullptr 是一个空指针常量,它不指向任何有效内存,只是表示‘没有指向’。

3. 解题心法 拿到这类题,先不看 p 指向哪,直接看 p 左边那个 int *是什么——它定义了 p 这个变量的类型。记住:指针变量的类型永远是它所指向的数据类型,而不是指针本身。用这个通法,基本能秒杀所有指针语法选择题。

4. 逐项拆解

5. 易错点提醒 最容易掉进的坑是 A 项:把‘指针类型’和‘指向类型’混为一谈。还有 C 项,很多学生以为空指针就是‘指向了某个随机地址’,其实 nullptr 就是‘没有指向’。D 项则是因为大家太熟悉‘指针可能报错’,却忽略了报错发生在运行时而非编译期。

6. 考频趋势 指针相关题目在题库中占比很高:基础语法模块共 1295 题,其中 GESP 四级就有 186 题,2023 年单年就有 287 题,2024 年 413 题,2025 年 401 题,说明这类概念辨析题是高频考点,命题人持续在考。

7. 预测 基于近年高频趋势,未来四级仍会重点考指针声明、类型语义、nullptr 与野指针的区别,以及解引用空指针是运行时错误而非编译错误这一细节。建议学生多练几道类似选择题,把‘类型 vs 指向’‘声明 vs 解引用’‘编译 vs 运行’这三组对比刻在脑子里。

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