如果希望设计一个函数 xchg,实现交换两个 int 变量的值,则它的声明可以写为 void xchg(int a, int b);。( )
这题就是考值传递和引用传递的区别。看到'交换'二字,核心矛盾就在'函数内改了但外面没变'。命题人故意把形参写成普通变量,就是看你能不能一眼识破这个陷阱。
最容易错选A,觉得函数声明语法没错就行。其实语法没错不代表功能实现。很多考生盯着'void'和分号,完全忽略了形参后面缺了'&'符号这个致命细节。还有一种情况是混淆了指针传递,以为int*也能交换,其实题目明确写的是int a, int b,连指针符号都没有,更别提引用了。
【考点】函数参数传递机制(值传递 vs 引用传递)
这道题看似简单,其实是C++函数参数传递的经典陷阱。命题人把'交换两个变量'这个需求包装成函数声明判断题,核心就卡在一个符号上:形参后面有没有'&'。如果写成void xchg(int &a, int &b),那就是引用传递,能改原值;但题目里写的是void xchg(int a, int b),这是标准的值传递。