一个较简单的C语言问题

#include<stdio.h>
void swap(int *p1,int *p2);
int main()
{
int x=10,y=20;
swap(&x,&y);
printf("x=%d,y=%d\n",x,y);
return 0;
}
void swap(int *p1,int *p2)
{
int *t;
t=p1,p1=p2,p2=t;
printf("*p1=%d,*p2=%d\n",*p1,*p2);
}
为什么输出的*p1= 20, *p2=10,有点不了解,P1和P2的值与X,Y有什么关系,如果有那么是怎么传递的。。

swap(&x,&y); //将x与y的地址分别传给p1和p2

t=p1,p1=p2,p2=t; //这句是先将p1的值保存在t中,再将p2的值赋给t1,再将t中保存的p1的值赋给p2,其实就是交换p1与p2的值

因为p1和p2保存的是x与y的地址值(这是指针的功能嘛),所以当交换p1与p2的值的时候,p1指向了y,而p2指向了x,所以输出*p1即输出y的值,输出*p2即输出x的值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-26
将两个指针的指向位置调换了
相似回答