指针是否实现值的转换

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6     void swap(int *p1,int *p2);
 7     int a,b;
 8     int *pointer_1,*pointer_2;
 9     printf("please enter a and b:");
10     scanf("%d,%d",&a,&b);
11     pointer_1 = &a;
12     pointer_2 = &b;
13     if(a<b) swap(pointer_1,pointer_2);
14     printf("max=%d,min=%d\n",a,b);
15     return 0;
16 }
17 void swap(int *p1,int *p2)
18 {
19     int p;
20     p = *p1;//交换的是指针的变量,也就是a变量的值,结果输出会是max=大数,min=小数
21     *p1 = *p2;//*p《==》a,即*p是变量a的值,所以交换的时候是值的改变
22     *p2 = p;
23 }
 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6     void swap(int *p1,int *p2);
 7     int a,b;
 8     int *pointer_1,*pointer_2;
 9     printf("please enter a and b:");
10     scanf("%d,%d",&a,&b);
11     pointer_1 = &a;
12     pointer_2 = &b;
13     if(a<b) swap(pointer_1,pointer_2);
14     printf("max=%d,min=%d\n",a,b);
15     return 0;
16 }
17 void swap(int *p1,int *p2)
18 {
19     int p;
20     p = p1;//交换的是指针的地址,也就是p1和p2的地址互换,但是变量ab中的值仍没有变,所以输出时max=a=5;min=b=9;
21     p1 = p2;//此方法并没有实现值的转换,只是改变了地址
22     p2 = p;//p1,p2是地址所以互换的只是地址,变量啊a和b的值并没有变化
23 }

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6     void exchange(int *q1,int *q2,int *q3);
 7     int a,b,c,*p1,*p2,*p3;
 8     printf("please enter three numbers:");
 9     scanf("%d,%d,%d",&a,&b,&c);
10     p1 = &a;
11     p2 = &b;
12     p3 = &c;
13     exchange(p1,p2,p3);
14     printf("The order is:%d,%d,%d\n",a,b,c);
15     return 0;
16 }
17 void exchange(int *q1,int *q2,int *q3)
18 {
19     void swap(int *pt1,int *pt2);
20     if(*q1 < *q2)swap(q1,q2);
21     if(*q1 < *q3)swap(q1,q3);
22     if(*q2 < *q3)swap(q2,q3);
23 }
24  void swap(int *pt1,int *pt2)
25  {
26     int t;
27     t = *pt1;
28    *pt1 = *pt2;
29    *pt2 = t;
30  }

 

posted @ 2017-12-07 22:21  小孢子  阅读(218)  评论(0编辑  收藏  举报