学C语言_指针_2_经典指针程序_互换两个数字

   1:  # include <stdio.h>
   2:   
   3:  void Fairyd_1(int , int );    //定义函数Fairyd_1,形参可以不注明变量,直接定义类型即可。
   4:  void Fairyd_2(int *, int *);  //定义函数Fiaryd_2,该函数形参的变量为整型指针。
   5:  void Fairyd_3(int *, int *);  //定义函数Fiaryd_3,该函数形参的变量为整型指针。
   6:   
   7:  int main(void)
   8:  {
   9:      int a = 3;
  10:      int b = 5;
  11:   
  12:      Fairyd_1(a, b);
  13:      printf("a = %d, b = %d\n", a, b);
  14:   
  15:      Fairyd_2(&a, &b);  //取a和b的变量地址,要加上&(取地址符)符号。
  16:      printf("a = %d, b = %d\n", a, b);
  17:   
  18:      Fairyd_3(&a, &b);
  19:      printf("a = %d, b = %d\n", a, b);
  20:   
  21:      return 0;
  22:  }
  23:   
  24:  void Fairyd_1(int a, int b)
  25:  {
  26:      int t;
  27:          
  28:      t = a;
  29:      a = b;
  30:      b = t;
  31:   
  32:      return 0;
  33:  }//定义函数Fairyd_1,不能完成互换功能。因为局部变量只能在本函数内有效。
  34:   
  35:  void Fairyd_2(int * p, int * q)
  36:  {
  37:      int * t;//将t也定义为int *类型,这样才能与p和q类型一致。
  38:      
  39:      t = p;
  40:      p = q;
  41:      q = t;
  42:  }
  43:   
  44:  void Fairyd_3(int * p, int * q)
  45:  {
  46:      int t;//将t定义为int类型,这样与*p和*q才是同一类型。
  47:   
  48:      t = *p; //*p代表指针p指向的对象。
  49:      *p = *q;
  50:      *q = t;
  51:  }//定义函数Fairyd_3,用指针互换可以完成互换功能。
运行结果:

image

前两个自定义函数都不能完成互换,只有最后个能完成互换功能。

posted on 2011-06-25 16:34  liwenodo  阅读(689)  评论(0编辑  收藏  举报

导航