C语言:三种函数方法的调用,引用调用与指针


三种函数方法的调用,

主要看change3这个函数, 此方法调用后, 会对主函数造成影响!

  1. #include <stdio.h>   
  2.   
  3. void change1(int a, int b)  
  4. {  
  5.     if(a<b)  
  6.     {  
  7.         int temp;  
  8.         temp = a;  
  9.         a = b;  
  10.         b = temp;  
  11.     }  
  12.     printf("change1: a = %d, b = %d \n",a,b);  
  13. }  
  14.   
  15. void change2(int *p1, int *p2)  
  16. {  
  17.     if(*p1<*p2)  
  18.     {  
  19.         int *temp;  
  20.         temp = p1;  
  21.         p1 = p2;  
  22.         p2 = temp;  
  23.     }  
  24.     printf("change2: a = %d, b = %d \n",*p1,*p2);  
  25. }  
  26.   
  27. void change3(int *p1, int *p2)  
  28. {  
  29.     if(*p1<*p2)  
  30.     {  
  31.         int temp;  
  32.         temp = *p1;  
  33.         *p1 = *p2;  
  34.         *p2 = temp;  
  35.     }  
  36.     printf("change3: a = %d, b = %d \n",*p1, *p2);  
  37. }  
  38.   
  39. int main()  
  40. {  
  41.     int a, b;  
  42.     int *p1,*p2;  
  43.     printf("Input two number:\nfirst:");  
  44.     scanf("%d",&a);  
  45.     printf("second:");  
  46.     scanf("%d",&b);  
  47.     p1 = &a;  
  48.     p2 = &b;  
  49.   
  50.     change1(a,b);    /*方法change1中调换两个数的位置,不会对主函数有影响*/  
  51.     printf("main: a = %d, b = %d \n",a,b);  
  52.   
  53.     change2(p1,p2);  /*方法change2中调换两个娄的位置,不会对主函数有影响*/  
  54.     printf("main: a = %d, b = %d \n",a,b);  
  55.   
  56.     change3(p1,p2);  /*方法change3中调换两个数的位置,会对函数主有影响*/  
  57.     printf("main: a = %d, b = %d \n",a,b);  
  58. }  

相关内容