一、指针
int a = 10,b = 20;
int *pa = &a;
int *pb = &b;
NSLog(@"a的地址 = %p, b的地址 = %p",pa,pb);
NSLog(@"交换前:pa指向的值 = %d, pb指向的值 = %d",*pa,*pb);
if (pa < pb) {
pa = (int *)(pb - pa);
pb = (int *)(pb - ((int)pa & 0x0000ffff));
pa = (int *)(pb + ((int)pa & 0x0000ffff));
}else {
pb = (int *)(pa - pb);
pa = (int *)(pa - ((int)pb & 0x0000ffff));
pb = (int *)(pa + ((int)pb & 0x0000ffff));
}
NSLog(@"a的地址 = %p, b的地址 = %p",pa,pb);
NSLog(@"交换后:pa指向的值 = %d, pb指向的值 = %d",*pa,*pb);
二、异或
a ^= b;
b ^= a;
a ^= b;