main()
{
void rub(int *p1,int *p2);
int x,y;
int *p1,*p2;
x=1,y=2;
p1=&x,p2=&y;//这里P1,P2是有地址,没赋值的
rub(p1,p2);//函数调用结束后P1,P2的地址没有被改变
printf("%d,%d\n",*p1,*p2);//输出的是原来P1,P2所指的内容:1,2.
}
void rub(int *p1,int *p2)
{
int *p;
p=p1; //交换地址即交换指针的指向,为什么不能实现两个数值的交换呢?
p1=p2;
p2=p;
printf("%d,%d\n",*p1,*p2);//在函数内交换了地址,其实确切说是交换了指针参数的副本.输出相应的值,2,1.
}