C语言指针学习对swap()的总结

 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\n",x,y);//形参传值,不能交换,实际传过去是拷贝的一份,没改变主函数中x,y
51     swap2(&x,&y);
52     printf("swap2: x:%d,y:%d\n",x,y);//不能交换,函数中只是地址交换了下,地址指向的内容没有交换
53     swap3(&x,&y);
54     printf("swap3: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行了交换
55     swap4(&x,&y);
56     printf("swap4: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
57     swap5(&x,&y);
58     printf("swap5: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
59     swap6(x,y);
60     printf("swap6: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
61     return 0;
62 }

参考链接:http://blog.chinaunix.net/uid-26826958-id-3161383.html

posted @ 2016-07-13 17:56  vxee  阅读(616)  评论(0编辑  收藏  举报