#include<iostream>
//void swap(const int *&p1, const int *& p2) // int 之前加const会导致swap函数错误,const不能修饰引用,引用不是常量
void swap( int *&p1, int *& p2) //此处函数的形参p1, p2都是引用
{
// int *p;
// *p=*p1;
// *p1=*p2;
// *p2=*p;
}
int main() {
int *a,*b;
std::cin>>*a>>*b; //输入a,b两变量的值
swap(a,b); //直接以变量a和b作为实参调用swap函数
std::cout<< *a << " " <<*b; //输出结果
}
[list]
[*]const 修饰的参数不能作为左值,如果const修饰的参数作为左值,系统报错;
[*]swap函数执行时,会匹配参数类型,如果参数类型不一致或函数不存在,编译器报错。如果指针的引用做形式参数,那些swap函数的实参一定是指针类型,形参是实参的一个别名。
[/list]