请详细解释代码尤其是引用参数部分

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:56:10
#include <iostream.h>

void swap(int &x,int &y);

void main()
{
int x=5, y=6;
cout <<"before swap, x:" <<x <<" ,y:" <<y <<endl;

swap(x,y);

cout <<"after swap, x:" <<x <<" ,y:" <<y <<endl;
}

void swap(int &rx,int &ry)
{
int temp=rx; rx=ry; ry=temp;
}
请详细解释代码尤其是引用参数部分并请说明引用参数的用法和何时使用?
为何函数声明和定义部分要用引用参数而引用没有初始化,调用的时候却没有使用引用参数?请详解一下引用参数?

void swap(int &rx,int &ry) 这个已经声明了引用处理了。
我想你的问题是不是调用的时候应该这么调用:swap(&x,&y); ??

这是不正确的,这里的&已经变成了取址的意思了。
因为你声明为引用,因此编译器自然会帮你当引用处理了,也就是说在调用的直观上来说没有区别,区别在于你的程序所做得事情不同。

普通传递参数的swap( int x,int y );这里的x,y是形参,他们只是实参的Copy,所以你在Swap中怎么对形参做操作都不会影响到实参,因此你怎么交换啊?
所以你必须要采用能够影响到实参的方式,这种方式就是引用。

具体的关于引用的我就不多说了,因为书本上的专家比我说得很得多。
推荐c++ Primer。

函数执行的交换两数的内容 你应该知道的
函数定义部分当然不要显式的初始化,直接用的就是实数,是用实数在
执行子函数的操作,调用时引用参数,什么意思啊?调用时应该
直接将实参的值传给形参了啊(相当于你说的初始化吧)。
(这个题特别点,直接用的实参)