GESP 四级 · GESP 四级样题(C++ 组) 第 24 题

判断题 · 答案 B · 考点:函数

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

题目

如果希望设计一个函数 xchg,实现交换两个 int 变量的值,则它的声明可以写为 void xchg(int a, int b);。( )

答案:B

考点

函数

解题思维

这题就是考值传递和引用传递的区别。看到'交换'二字,核心矛盾就在'函数内改了但外面没变'。命题人故意把形参写成普通变量,就是看你能不能一眼识破这个陷阱。

常见错误

最容易错选A,觉得函数声明语法没错就行。其实语法没错不代表功能实现。很多考生盯着'void'和分号,完全忽略了形参后面缺了'&'符号这个致命细节。还有一种情况是混淆了指针传递,以为int*也能交换,其实题目明确写的是int a, int b,连指针符号都没有,更别提引用了。

详细解析(节选)

【考点】函数参数传递机制(值传递 vs 引用传递)

1. 命题人怎么挖坑

这道题看似简单,其实是C++函数参数传递的经典陷阱。命题人把'交换两个变量'这个需求包装成函数声明判断题,核心就卡在一个符号上:形参后面有没有'&'。如果写成void xchg(int &a, int &b),那就是引用传递,能改原值;但题目里写的是void xchg(int a, int b),这是标准的值传递。

同考点真题

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