有如下程序: #include using namespace std; void f1(int& x, int& y) {int z=x+y; x=y; y=z;} void f2(int x, i

admin2015-07-22  17

问题 有如下程序:
       #include
       using namespace std;
       void f1(int& x, int& y) {int z=x+y; x=y; y=z;}
       void f2(int x, int y) {int z=x+y; x=y; y=z;}
       int main() {
           int x=10,y=26;
           f1(x,y);
           f2(x,y);
           cout<           return 0;
       }
运行时的输出结果是

选项 A、10
B、26
C、36
D、46

答案C

解析 参数传递有三种:
传值(value),传址(address),和传引用(reference)
传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,函数f2就属于传值调用,所以不会改变y的值。
传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量
传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。f1函数属于传引用调用,所以y的值在执行完函数后变为了36,C选项正确。
转载请注明原文地址:https://kaotiyun.com/show/mANp777K
0

最新回复(0)