示例代码如下:
1 #include <iostream> 2 using namespace std; 3 4 /* 5 * 指针法(中间变量1) 6 */ 7 void swap1(int *pa, int *pb) 8 { 9 int temp = *pa; 10 *pa = *pb; 11 *pb = temp; 12 } 13 14 /* 15 * 引用法(中间变量2) 16 */ 17 void swap2(int &ra, int &rb) 18 { 19 int temp = ra; 20 ra = rb; 21 rb = temp; 22 } 23 24 /* 25 * 相互加减法 26 */ 27 void swap3(int &a, int &b) 28 { 29 a = a + b; // 可能会溢出 30 b = a - b; 31 a = a - b; 32 } 33 34 /* 35 * 异或法 36 */ 37 void swap4(int &a, int &b) 38 { 39 a ^= b; 40 b ^= a; 41 a ^= b; 42 } 43 44 void print(int &a, int &b) 45 { 46 cout <<"a = "<< a << " " <<"b = "<< b << endl; 47 } 48 49 void main(int argc, char* argv[]) 50 { 51 int a =100, b = 200; 52 print(a, b); 53 // 指针法(中间变量1) 54 swap1(&a, &b); 55 print(a, b); 56 // 引用法(中间变量2) 57 swap2(a, b); 58 print(a, b); 59 // 相互加减法 60 swap3(a, b); 61 print(a, b); 62 // 异或法 63 swap4(a, b); 64 print(a, b); 65 66 system("pause"); 67 } 68 69 // run out: 70 /* 71 a = 100 b = 200 72 a = 200 b = 100 73 a = 100 b = 200 74 a = 200 b = 100 75 a = 100 b = 200 76 请按任意键继续. . . 77 */
以上四种交换方法,各有利弊。
Good Good Study, Day Day Up.
顺序 选择 循环 坚持