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

选择题 · 答案 B · 考点:运算符优先级

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

题目

已知:

int a[3][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
};
int (*p)[4] = a;

则表达式 *(*(p + 2) + 1) 的值为( )。

答案:B

考点

运算符优先级

解题思维

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

常见错误

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

详细解析(节选)

【考点】指针与数组|解引用运算|运算符优先级

1. 🎯 考纲定位 本题考查 GESP 二级 指针与数组模块。命题人专门用这道题卡住那些只背"指针加减"规则、却不会把指针和数组对应关系理解透的考生——很多人看到 p+2 就下意识想"第 2 行",完全忽略了 p 本身是指向行的指针。

2. 🧠 解题思维 看到二维数组 a[3][4],先建立核心对应关系:数组名 a 是行指针,类型 int(*)[4],指向第一行;p = a 后,p 也是行指针。p+2 就是第 3 行(a[2]),*(p+2) 解引用得到该行数组,再 +1 是数组元素偏移,最后 * 解引用得到具体值 a[2][1] = 10。

3. 🪤 陷阱拆解

4. 🔄 反命题思维 若改成 int* p = a,p 就指向第一个元素 a[0][0],p+2 跳到 a[0][2],再 +1 是 a[0][3]=4,答案全变。提醒:指针类型决定其加减规则,二维数组指针和一级指针不一样。

同考点真题

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