<span>swap()函数的几种情况详解</span>
针对swap()可能出现的几种情况,做了详细介绍。
1 #include <iostream> 2 using namespace std; 3 4 /*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/ 5 void swap0(int a, int b) 6 { 7 int tem; 8 tem = a; 9 a = b; 10 b = tem; 11 } 12 13 /*没有初始化指针就开始用,该函数是有问题的*/ 14 void swap1(int *a, int *b) 15 { 16 int c=4; 17 int *tem = &c; /*注意tem没有分配内存,分配内存即可使用*/ 18 19 *tem = *a; 20 *a = *b; 21 *b = *tem; 22 } 23 24 /*函数内只是指针的变化,指针的值没有变化*/ 25 void swap2(int *a, int *b) 26 { 27 int *tem; 28 29 tem = a; 30 a = b; 31 b = tem; 32 33 } 34 35 /*指针传递实现两个数的交换*/ 36 void swap3(int *a, int *b) 37 { 38 int tem; 39 40 tem = *a; 41 *a = *b; 42 *b = tem; 43 } 44 45 /*指针传递实现两个数的交换*/ //最佳 46 void swap4(int &a, int &b) 47 { 48 int tem; 49 50 tem = a; 51 a = b; 52 b = tem; 53 } 54 55 int main() 56 { 57 int a= 1; 58 int b= 2; 59 cout << a<< " " << b<< endl; 60 // swap0(a, b);//no 61 62 // swap1(&a, &b);//分配内存yes 63 64 // swap2(&a, &b);//指针变换 65 66 // swap3(&a, &b);//yes 67 68 swap4(a, b);//yes 69 70 cout << a<< " " << b<< endl; 71 return 0; 72 }