谁能帮我解释一下(关于指针)
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的值还是没有交换。