指针是否实现值的转换
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 }