还是两个数的交换问题
#include<iostream.h>
void main()
{
int *a,*b;
int x,y;
int c;
cout<<"Input a b:";
cin>>x>>y;
a=new int(x);
b=new int(y);
c=b-a; //记录a与b的首地址距离
a=a+(c^0x80000000); /*
a地址加上距离c得到b地址
(因为*a与*b之间的大小关系,
c^0x80000000目的是为了
对距离值取反,否则就会出
现地址增减方向上的错误)
*/
b=b-(c^0x80000000);
cout<<"After Swap"<<endl;
cout<<"a Value:"<<*a<<endl;
cout<<"b Value:"<<*b<<endl;
}
也是用了中间变量,可能这样不够完善,但和c=a;a=b;b=c;比较起来要好得多。
毕竟c=a;a=b;b=c;当数据量大了的时候是有程序崩溃的危险的。
现在这个中间变量只记录两首地址的距离,在存储量上应该没问题。
这些应该是最基础的东西,复习下也好~~~