指针用来理解的例子

#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);
  //这种方式,能够直接影响方法外面的数据的使用
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值