首页 > 试题广场 >

在头文件及上下文均正常的情况下,下面程序输出的是?

[单选题]
void swap(int &a, int &b)
{
     int temp = a;
     a = b;
     b = temp;
     cout<<a<<' '<<b<<' ';
}

int main()
{
    int x=1;
    int y=2;
    swap(x, y);
    cout<<x<<' '<<y<<'\n';
    return 0;
}
在头文件及上下文均正常的情况下,上面程序输出的是?
  • 2 1 1 2
  • 2 1 2 1
  • 1 2 2 1
  • 1 2 1 2
推荐
答案:选B
调用函数swap(x, y);传给被调用函数void swap(int &a, int &b )的是x、y的引用,所以在被调用函数里面交换相应的也会交换实参,所以都是输出2 1
编辑于 2014-12-30 20:24:02 回复(1)
这里的swap()函数传的是引用,所以可以实现a,b数值的交换。传指针也可以实现交换,但是直接传值是不能实现交换的。
发表于 2016-08-15 15:17:43 回复(0)
引用相当于别名,对引用进行操作相当于直接修改其本身
发表于 2018-06-19 23:04:26 回复(0)
我不是在做c吗?还没学c++,部分逻辑能懂,代码有些看不懂哎
发表于 2023-05-06 20:10:32 回复(3)
引用
发表于 2015-11-22 22:15:33 回复(0)
调用函数时传递的是引用,因此对形式参数的修改会影响到实际参数。
发表于 2022-03-21 11:50:28 回复(0)
这个答案输出会不会有错啊
发表于 2017-04-01 01:10:40 回复(0)
void swap 定义swap cout 输出 主程序从 int main 开始 由上面swap定义可知,swap会交换两个数,cout输出一次 swap后,x,y内容已经改变,cout再输出一次
发表于 2024-09-24 15:34:16 回复(0)
这个传递没问题吗?不是传地址吗?怎么传数值?形参和实参类型不一样啊
发表于 2024-05-11 16:46:57 回复(0)
答案选D有错误吧,应该是2121
发表于 2022-12-13 10:57:39 回复(0)
不是简单值传递 是引用
发表于 2022-04-05 18:06:15 回复(0)
这个代码会编译报错
发表于 2021-03-08 18:31:19 回复(0)
<p>这是使用子函数做了xy互换</p>
发表于 2020-12-10 18:33:14 回复(0)
函数形参为a,b地址,所以结果会传递到实参
发表于 2020-06-11 09:58:10 回复(0)
指针的传递

发表于 2019-11-18 10:45:24 回复(0)

调用函数输出一次 下面又输出一次


发表于 2018-10-09 20:36:55 回复(0)
主要考察 参数的传递形式;
发表于 2018-03-24 09:04:41 回复(0)