交换指针数值为什么也变了?
以下程序没有问题,我的问题是:假如我给n1,n2,n3赋值3,2,1, swap函数作用是把指针变量p1,p2,p3的值(也就是n1,n2,n3的地址)调换位置,但是n1,n2,n3的本身的数值没有改变,printf函数输出的可是n1,n2,n3的数值,为什么这个程序的结果是1,2,3, 该程序是依次增大的排序效果?而不是3,2,1?
#include <stdio.h>
int main()
{ void swap(int *p1,int *p2);
int n1,n2,n3;
int *p1,*p2,*p3;
printf("input three integer n1,n2,n3:");
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2) swap(p1,p2);
if(n1>n3) swap(p1,p3);
if(n2>n3) swap(p2,p3);
printf("Now,the order is:%d,%d,%d\n",n1,n2,n3);
return 0;
}
void swap(int *p1,int *p2)
{int p;
p=*p1; *p1=*p2; *p2=p;
}