在C++里面,如果两个指针互换地址,那么两个指针的指向的值互换吗?

在C++里面,如果两个指针互换地址,那么两个指针的指向的值互换吗?为什么我看到有些题上是没有发生互换的

首先说明一点,任意对象的地址有天然的常量属性,是不可能互换的

比如:

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了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-26
指针互换,两个指针指向的地址中的值不变。
举个例子指针a指向地址0x10,0x10中存了个字符‘q’;
指针b指向地址0x11,0x11中存了个字符‘w’;
交换后,指针a指向地址0x11,指针b指向地址0x10。
所以通过指针读取的时候看似是交换了,但是实质上来说值没有变。本回答被网友采纳