下面代码执行结束时,变量 a 的值变成 $15$。
void add10(int &x) { x += 10; }
int main() {
int a = 5;
add10(a);
}答案A。综合分析各选项,运用相关知识推导。
仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。
【考点】引用参数|函数传参机制
GESP 四级《函数基础》模块,考察引用参数与值传递的区别。命题人专卡那些只背语法、不看语义的考生——他们常把 int &x 误当成普通形参,以为函数只改局部变量,这题就是用来筛掉这种惯性思维的。
看到 int &x 就知道是引用传参,函数内修改 x 直接改变 a。add10(a) 后 a 从 5 变 15,题设结论正确。这类题通法是:识别参数类型(值/引用/指针),追踪变量别名关系,按调用顺序模拟执行。
错选 B 的人常把 int &x 当成普通值传递,以为函数内 x+=10 只改局部变量。其实 & 就是引用别名,x 和 a 是同一内存地址。命题人故意用 add10 这种无返回值函数,让你忽略参数类型,只盯着 x+=10 看。记住:看到 & 就要警惕,它不是“取地址”而是“别名”。
若把 int &x 改成 int x,答案就翻盘成 B;改成指针 int *x 则需解引用。刷到引用题先问:“这个参数是别名还是副本?”