您的位置:首页 > 其它

指针用来理解的例子

2016-08-18 08:35 113 查看
#include <stdio.h>

int main()



/*

  int i = 10;

  int* p;

  printf("*p:\np=%d\t",p);

  printf("*p=%d\n",*p);

  *p = i;

  printf("*p=i:\np=%d\t",p);

  printf("*p=%d\t",*p);

  printf("i=%d\n",i);

  *p = &i;

  printf("*p = &i:\np=%d\t",p);

  printf("&i=%d\t",&i);

  printf("*p=%d\t",*p);

  printf("i=%d\n",i);

  p = &i;

  printf("p = &i:\np=%d\t",p);

  printf("&i=%d\t",&i);

  printf("*p=%d\t",*p));

  printf("i=%d\n",i);

*/

  void change1(int a,int b);

  void change2(int* a,int* b);

  void change3(int *a,int* b);

   int *p1,*p2,*p,a,b,temp;

    scanf("%d,%d",&a,&b);

    p1=&a;  p2=&b;

/*

    if(a<b)

    //{  p=p1;  p1=p2;  p2=p;}

    {  temp=*p1;  *p1=*p2;  *p2=temp;}

*/

  change1(a,b);

  printf("change1--main函数中:a=%d,b=%d\n",a,b);

  printf("change1--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);

  change2(p1,p2);

  printf("change2--main函数中:a=%d,b=%d\n",a,b);

  printf("change2--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);

  change3(&a,&b);

  printf("change3--main函数中:a=%d,b=%d\n",a,b);

  printf("change3--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);

    

  printf("max=%d,min=%d\n",*p1,*p2);

  system("pause");

  return 0;

}

//函数的值传递--传递的是参数的数值,

//在方法中,相当于一个副本使用,不影响函数外面的变量

void change1(int a,int b)

{ int temp = a;

  a = b;

  b = temp;

  printf("change1中:a=%d,b=%d\n",a,b);

}

//使用指针(地址/引用)作为参数

void change2(int* a,int* b)

{ //使用临时指针,存储传递过来的指针,交换指针的指向

  //只能在方法中起作用,不影响方法外面的指针的使用

  int *temp = a;

  a = b;

  b = temp;

  printf("change2中:a=%d,b=%d\n",*a,*b);

  //如果想要实现方法外面的指针也发生改变,则函数需要使用

  //指向指针的指针作为参数(或者直接在外面进行交换指向)

}

//使用(地址/引用)作为参数

void change3(int *a,int* b)

{ //使用临时变量来存储指针指向位置的值

  //通过指针(的指向),来直接修改指针指向的位置的数值

  int temp = *a;

  *a = *b;

  *b = temp;

  printf("change3中:a=%d,b=%d\n",*a,*b);

  //这种方式,能够直接影响方法外面的数据的使用

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: