第5题 执行下述代码,将输出( )。
【答案】A
【考纲知识点】 函数参数传递方式、函数调用与变量作用域
【解析】
代码分析
函数swap的参数传递方式:
函数swap有两个参数,第一个参数a是值传递,第二个参数b是引用传递。
值传递是将实参的值复制一份传递给形参,在函数内部对形参的修改不会影响到实参。引用传递是将实参的引用(即别名)传递给形参,在函数内部对形参的修改会直接影响到实参。
函数调用过程:
在main函数中,定义了两个整型变量x = 1 和y = 2。
调用swap(x, y) 时,x的值被复制给swap函数的形参a,y的引用被传递给swap函数的形参b。
在swap函数内部,执行int temp = a; a = b; b = temp; 语句,交换了a和b的值。由于a是值传递,a的改变不会影响到x;而b是引用传递,b的改变会影响到y,此时y的值变为1。
输出结果:
在main函数中,调用swap函数后,x的值仍然是1,y的值变为1,所以std::cout << x << y; 输出的结果是11。
综上,答案选A。