#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; //输出结果 }
- const 修饰的参数不能作为左值,如果const修饰的参数作为左值,系统报错;
- swap函数执行时,会匹配参数类型,如果参数类型不一致或函数不存在,编译器报错。如果指针的引用做形式参数,那些swap函数的实参一定是指针类型,形参是实参的一个别名。