谁能帮我解释一下(关于指针)
swap(int *p1,int *p2){int *temp;
*temp=*p1; /*此语句有问题*/
*p1=*p2;
*p2=temp;
}
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
谁能给我解释一下为什么第一个不对???
程序代码:swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}是对的,函数swap要做的是要交换传进来的两个地址所指示的地方上的两个值。
程序代码:swap(int *p1,int *p2)
{int *temp;
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
很显然,temp不知指向哪里,*temp = *p1,是很危险的,如果一开始这么定义,就是对的,
程序代码:swap(int *p1,int *p2)
{int a=0,*temp=&a;
*temp=*p1; /*此语句有问题*/
*p1=*p2;
*p2=temp;
},不过似乎有点傻。
程序代码:swap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
},这样swap函数执行完后,只是p1,p2指向的地址改变了,例如,swap执行前,p1指向a=12,p2指向b=23,swap执行完后,p1指向b,p2指向a,但a还是等于12,b还是等于23,a,b的值还是没有交换。