1 #include<stdlib.h> 2 #include<stdio.h> 3 void swap1(int x,int y) 4 { 5 int temp; 6 temp=x; 7 x=y; 8 y=temp; 9 } 10 void swap2(int *x,int *y) 11 { 12 int *temp; 13 temp=x; 14 x=y; 15 y=temp; 16 } 17 void swap3(int *x,int *y) 18 { 19 int temp; 20 temp=*x; 21 *x=*y; 22 *y=temp; 23 } 24 void swap4(int a[],int b[]) 25 { 26 int temp; 27 temp=a[0]; 28 a[0]=b[0]; 29 b[0]=temp; 30 } 31 void swap5(int a[],int b[]) 32 { 33 int temp; 34 temp=*a; 35 *a=*b; 36 *b=temp; 37 } 38 void swap6(int &a,int &b) 39 { 40 int t=a; 41 a=b; 42 b=t; 43 } 44 int main() 45 { 46 int x,y; 47 x=4; 48 y=3; 49 swap1(x,y); 50 printf("swap1: x:%d,y:%d ",x,y);//形参传值,不能交换,实际传过去是拷贝的一份,没改变主函数中x,y 51 swap2(&x,&y); 52 printf("swap2: x:%d,y:%d ",x,y);//不能交换,函数中只是地址交换了下,地址指向的内容没有交换 53 swap3(&x,&y); 54 printf("swap3: x:%d,y:%d ",x,y);//能交换,地址指向的内容进行了交换 55 swap4(&x,&y); 56 printf("swap4: x:%d,y:%d ",x,y);//能交换,地址指向的内容进行交换 57 swap5(&x,&y); 58 printf("swap5: x:%d,y:%d ",x,y);//能交换,地址指向的内容进行交换 59 swap6(x,y); 60 printf("swap6: x:%d,y:%d ",x,y);//能交换,地址指向的内容进行交换 61 return 0; 62 }
参考链接:http://blog.chinaunix.net/uid-26826958-id-3161383.html