题面
描述
填空,使得程序输出结果是:
5,3
#include <iostream>
using namespace std;
void swap(
// 在此处补充你的代码
)
{
int * tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 3,b = 5;
int * pa = & a;
int * pb = & b;
swap(pa,pb);
cout << *pa << "," << * pb;
return 0;
}
思路
我们可以注意到这里交换的是两个地址。
地址做形参传入函数后要使其交换。
在观察发现函数内部的是int* tmp=a
而不是int tmp=*a
,也就是说要交换两个的指针指向的地址而不是指针指向的东西,那么我我们只能去引用来交换。否则,仍是一般形参的交换并不会发生改变。
int* &a, int* &b