关于指针的调用问题
下面两个函数的功能是都是想实现两个数值的交换,但是为什么第一个不能实现,而第二个能实现呢?还望高手们指教!!! 拜托!谢谢!!!!!!!!!!!!(1)
main()
{
void rub(int *p1,int *p2);
int x,y;
int *p1,*p2;
x=1,y=2;
p1=&x,p2=&y;
rub(p1,p2);
printf("%d,%d\n",*p1,*p2);
}
void rub(int *p1,int *p2)
{
int *p;
p=p1; //交换地址即交换指针的指向,为什么不能实现两个数值的交换呢?
p1=p2;
p2=p;
printf("%d,%d\n",*p1,*p2);
}
(2)
main()
{
void rub(int *p1,int *p2);
int x,y;
int *p1,*p2;
x=1,y=2;
p1=&x,p2=&y;
rub(p1,p2);
printf("%d,%d\n",*p1,*p2);
}
void rub(int *p1,int *p2)
{
int p;
p=*p1; //交换指针所指数据的内容则可以实现数值交换,又是为什么呢?
*p1=*p2;
*p2=p;
printf("%d,%d\n",*p1,*p2);
}