鱼C论坛

 找回密码
 立即注册
查看: 2020|回复: 4

为什么a,b的值没有调换...

[复制链接]
发表于 2014-4-17 18:28:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
void swap(int *p1,int*p2)
{
        int *temp;
        temp=p1;
        p1=p2;
        p2=temp;
        std::cout<<"p1="<<*p1<<"\n"<<"p2="<<*p2<<"\n";
}
void main()
{
        int a=1,b=2;
        int *point1,*point2;
        point1=&a;
        point2=&b;
        if(a<b)
                swap( point1,point2);
        std::cout<<"a="<<a<<"\n"<<"b="<<b<<"\n";
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-17 19:28:39 | 显示全部楼层
举个例子,比如&a=0x01,&b=0x02,swap函数里,p1,p2接受到地址,&p1=0x01,&p2=0x02,此时交换地址,&p1=0x02,&p2=0x01,交换的只是p1,p2的地址,a,b的地址并没有交换。所以输出*p1,*p2时,地址里的数据交换了,而输出a,b是,数据没有交换~可能就是这样吧~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-17 19:36:27 | 显示全部楼层

修改一下,说错了,输出*p1,*p2,是地址交换了,地址里的数据没有交换~0x01里的值仍是1,0x02的值仍是2~~不好意思~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-18 06:55:01 | 显示全部楼层
原来如此...弄明白了...谢谢了...啊嘞嘎都
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-18 20:54:37 | 显示全部楼层
你在逗我?
明明是在交换指针。
你应该这么写
int t;
t = *P1;
*p1 = *p2;
*p2 = t;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 02:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表