C语言指针两个数交换


#include"stdio.h"
int main()
{ int *p1,*p2,*p,a,b;
  scanf("%d,%d",&a,&b);
  p1=&a;p2=&b;


  if(aprintf("\na=%d,b=%d\n",a,b);
  printf("max=%d,min=%d\n",*p1, *p2);
  return 0;
}

上这个可以这么写吗?不行的话 为什么呢?
#include"stdio.h"
int main()
{ int *p1,*p2,*p,a,b;
  scanf("%d,%d",&a,&b);
  p1=&a;p2=&b;

  if(aprintf("\na=%d,b=%d\n",a,b);
  printf("max=%d,min=%d\n",*p1, *p2);
  return 0;
}

上面那个a和b是没有变化的,只是p1和p2交换了指向地址而已。因为你只是进行指针交换,没有进行指针指向的内容交换
下面也一样,只是交换指针的指向地址而已

可以,代码没有问题,可以实现互换的,只是a,b的值并未互换,只是指针互换了!

img


有帮助的话采纳一下哦!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^