不使用第三方变量交换两个变量的值:
方法一:使用+,-实现:
思想:利用坐标轴上的距离
int a =2,b=12; a = b - a // 坐标轴上ab之间的距离 b = b - a //a 到坐标有坐标原点之间的距离 a = a + b //b到坐标原点之间的距离
方法二:使用异或 ^
思想:异或使得成对的相同数互相抵消
int a =2 , b =12; a = a ^ b; b = a ^ b; //b=a; a = a ^ b;
方法三:指针操作
思想:类似于加减操作交换
int *a,*b; //假设 *a=new int(10); *b=new int(20); //&a=0x00001000h,&b=0x00001200h a=(int*)(b-a); //&a=0x00000200h,&b=0x00001200h b=(int*)(b-a); //&a=0x00000200h,&b=0x00001000h a=(int*)(b+int(a)); //&a=0x00001200h,&b=0x00001000h