两个数的交换与引用的引入

作者在 2008-09-05 13:17:19 发布以下内容
我们要交换两个数,其程序如下:
void main()
{
int x(2),int y(4);
cout<<"x-"<<x<<"   y="<<y<<endl;
int t;
t=x;
x=y;
y=t;
cout<<"x="<<x<<"   y="<<y<<endl;
return 0;
}
其结果输出为:x=2   y=4
      x=4   y=2
但是我们如果有很多数需要交换,是不是每次都写一次上面的程序呢,这我们就引入了调用函数。其程序如下:

void main()
{
int x(2),int y(4);
cout<<"x="<<x<<"   y="<<y<<endl;
Swap(x,y);
cout<<"x="<<x<<"   y="<<y<<endl;
return 0;
}
void Swap(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
大家可能认为结果是x=2   y=4
  x=4   y=2
其实结果是x=2   y=4
  x=2   y=4


为什么结果是这样的呢?这就要想到函数的形参调用不改变实参,而且参数的传递是单向的。函数Swap改变的a与b的值,但不改变不了x与y的值。而且a与b的改变结果不回返回给x与y.
怎样才能达到想要的效果呢?这样我们就要用到引用。这是C++别与C的一个方面。其程序如下:
void main()
{
int x(2),int y(4);
cout<<"x="<<x<<"   y="<<y<<endl;
Swap(int x,int y);
cout<<"x="<<x<<"   y="<<y<<endl;
return 0;
}
void Swap(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
}
这样输出结果就是:x=2   y=4
  x=4   y=2

引用就是给一个变量起的另一个名字,他所指向的还是原来的变量。Swap交换的a与b,其实就是x与y的交换。因为在调用函数Swap时,x把值传递给引用a;y把值传递给b;就是给传入的两个参数x与y起了另一个名字。改变的也是x与y.所以结果就达到了交换x与y的目的。

另外想要说明的一点就是在声明引用时一定要给引用初始化。如int a;int &ra=a;如果只写成int a;int &ra就错了,但在本程序中,&a与&b就没有这样做,这儿有一点儿区别,它是在调用函数的时候进行的初始化的。
C++ | 阅读 3069 次
文章评论,共0条
游客请输入验证码
浏览78542次