C++指针及实参形参传递问题
#include <stdio.h>void main()
{ int a, b, *pa, *pb;
void swap (int *p,int *p2);
pa=&a;
pb=&b;
scanf("%d%d",&a,&b);
swap(pa,pb);
printf("\n main0:a=%d,b=%d \n",a,b);
printf("\n main1:*pa=%d,*pb=%d\n",*pa,*pb);
}
void swap(int * p1,int *p2)
{ int *p;
p=p1;
p1=p2;
p2=p;
printf("\nswap:*p1=%d,*p2=%d\n",*p1,*p2);
}
输入:12 22
输出:swap:*p1=22,*p2=12
main0:a=12,b=22
main1:*pa=12,*pb=22
当把后面的swap函数换成:
void swap(int * p1,int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
时输出
a=22,b=12
实在有点看不明白这个指针的过程,求大家指点,为什么第一个换了,第二个没有换过来,说细一点,谢谢