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

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

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

题目

在下列代码的横线处填写( ),可以使得输出是“20 10”。

#include <iostream>
using namespace std;
void xchg(________) { // 在此处填入代码
    int t = *x;
    *x = *y;
    *y = t;
}
int main() {
    int a = 10, b = 20;
    xchg(&a, &b);
    cout << a << " " << b << endl;
    return 0;
}
答案:B

考点

函数

解题思维

答案B。代码补全要考虑参数传递方式。如果需要修改实参,需用指针(*)传递。排序算法要理解每步比较的含义。

常见错误

排序代码补全要理解每步比较的含义。选择排序找最小值时比较的是array[min]>array[j]。

详细解析(节选)

【考点】指针基础|函数参数传递|地址引用

🎯 考纲定位:GESP 四级 C++ 大纲,指针基础与函数参数传递。命题人特意选&操作符,卡住80%考生对"地址传递"与"值传递"的本质混淆,这是四级区分度最大的考点。

🧠 解题思维:看到 *x 和 *y 必须立刻反应:x、y 是 int* 类型。main 里 &a 是 a 的地址,正好匹配参数类型。这是指针操作的标准模式:传址实现修改。函数体用临时变量 t 保存原值,再交叉赋值,经典交换逻辑。

🪤 陷阱拆解:陷阱 A 把 int 当参数,*x 非法;陷阱 C 同理;陷阱 D 用引用,&a 已是引用,再取地址语法错误且*a 无意义。考生常误以为 &a 是值,其实它是地址。命题人用 C++ 特有的引用语法伪装陷阱,背模板的人必栽。

🔄 反命题思维:命题人若改用引用参数,函数体应写 a = b; b = t; 而非 *x = *y;。遇到这类题先问:函数里是否用解引用?是则必为指针。四级最爱考"看起来像引用其实是地址"的陷阱,刷到先核对符号类型。

同考点真题

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