首先说明一点,任意对象的地址有天然的常量属性,是不可能互换的
比如:
int a,b;
int* pi;
pi=&a;
&a=&b; //这个是不行的,&a是个const
&b=pi; //&b也是个const
我估计你的意思是,通过函数交换两个指针的值,如果用C语言的方法,那就是把指针的地址传递给函数,就是二级指针了:
void swapp(int** p1, int** p2)
{
int* t; t=*p1;*p1=*p2;*p2=t;
}
int main()
{
int a=1,b=2;
int *p1=&a;
int *p2=&b;
swapp(&p1,&p2);//执行该函数以后p1指向b,p2指向a了
}
而c++有引用,用引用可以双向传递了:
void swapp(int*& rp1,int*& rp2)//指针的引用
{
int* t;
t=rp1; rp1=rp2;rp2=t;
}
int main()
{
int a=1,b=2;
int *p1=&a;
int *p2=&b;
swapp(p1,p2);//执行该函数以后p1指向b,p2指向a了
}