在C++里面,如果两个指针互换地址,那么两个指针的指向的值互换吗?
答案:2 悬赏:10 手机版
解决时间 2021-02-12 08:21
- 提问者网友:最爱你的唇
- 2021-02-11 17:33
在C++里面,如果两个指针互换地址,那么两个指针的指向的值互换吗?
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-02-11 18:15
指针互换,两个指针指向的地址中的值不变。
举个例子指针a指向地址0x10,0x10中存了个字符‘q’;
指针b指向地址0x11,0x11中存了个字符‘w’;
交换后,指针a指向地址0x11,指针b指向地址0x10。
所以通过指针读取的时候看似是交换了,但是实质上来说值没有变。
举个例子指针a指向地址0x10,0x10中存了个字符‘q’;
指针b指向地址0x11,0x11中存了个字符‘w’;
交换后,指针a指向地址0x11,指针b指向地址0x10。
所以通过指针读取的时候看似是交换了,但是实质上来说值没有变。
全部回答
- 1楼网友:三千妖杀
- 2021-02-11 18:38
首先说明一点,任意对象的地址有天然的常量属性,是不可能互换的
比如: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了
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯