为什么a,b的值没有调换...
#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";
}
举个例子,比如&a=0x01,&b=0x02,swap函数里,p1,p2接受到地址,&p1=0x01,&p2=0x02,此时交换地址,&p1=0x02,&p2=0x01,交换的只是p1,p2的地址,a,b的地址并没有交换。所以输出*p1,*p2时,地址里的数据交换了,而输出a,b是,数据没有交换~可能就是这样吧~~ 奔跑的鸭蛋 发表于 2014-4-17 19:28 static/image/common/back.gif
举个例子,比如&a=0x01,&b=0x02,swap函数里,p1,p2接受到地址,&p1=0x01,&p2=0x02,此时交换地址,&p1=0x02, ...
修改一下,说错了,输出*p1,*p2,是地址交换了,地址里的数据没有交换~0x01里的值仍是1,0x02的值仍是2~~不好意思~~ 原来如此...弄明白了...谢谢了...啊嘞嘎都 你在逗我?
明明是在交换指针。
你应该这么写
int t;
t = *P1;
*p1 = *p2;
*p2 = t;
页:
[1]