GESP 四级 · GESP 202312 C++ 四级 第 7 题

选择题 · 答案 A · 考点:函数

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

题目

在 C++ 中,执行下面代码后,输出的是( )。

int point(int *p)
{
    return *p**p;
}
int main()
{
    int a=20;
    int *p=&a;
    *p=point(p);
    cout<<*p<<endl;
}
答案:A

考点

函数

解题思维

这题核心就是追指针指谁、函数返回谁、赋值后谁变了。先画出 a 和 p 的内存关系,再看 point(p) 里 *p**p 到底算的是 a*a 还是 a*(&a),最后把返回值赋回 *p 后 cout 输出的是新值。

常见错误

容易把 **p 当成 p 本身或 p 的地址,从而算成 20*20=400 误选 D;或者忽略 *p=point(p) 这行赋值,以为 a 没变,直接选 C;还有人会把 *p**p 看错成 *p 乘以 p 的地址,得到 20*20=400 却误以为是 B 的 200。其实 **p 就是 a,所以 point(p) 返回 400,赋值后 a 变成 400,输出就是 400。

详细解析(节选)

考点:指针运算、函数传参、自调用

题目考纲定位

C++ 四级内存管理模块必考题,命题人专查你是否真的理解“指针是变量的地址”,而不是死记语法。这题把指针、解引用、函数传参、自调用揉在一起,卡住那些把指针和地址混为一谈的考生。

同考点真题

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