#include <iostream>
using namespace std;
void swap(int a, int b)
{
int x = a;
int y = b;
a = y;
b = x;
cout<<"swap "<<&a<<" "<<&b<<endl;
}
int main()
{
int a = 2;
int b = 8;
swap(a, b);
cout<<"main "<<&a<<" "<<&b<<endl;
}
如以上代码输出结果为:
可以看书swap
函数中参数a,b均为其副本,地址与main
函数中不同,虽然swap
完成了交换,但是结果并未传回到main
函数,所以其交换都是假交换,要完成真正的交换需要传递指针或者引用:
void swap(int *a, int *b)
{
int x = *a;
int y = *b;
*a = y;
*b = x;
}
void swap(int &a, int &b)
{
int x = a;
int y = b;
a = y;
b = x;
}