关于指针调用的一些问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:39:50
swap(int *pt1,int *pt2)

{int temp;

temp=*pt1;

*pt1=*pt2;

*pt2=temp;

}
上面的程序段是某个指针调用函数例题里的一部分,再这个程序段里,实际操作的还是数据,能不能改成纯粹的对地址的操作,例如

swap(int *pt1,int *pt2)

{int *temp;

temp=pt1;

pt1=pt2;

pt2=temp;
}
我也不知道能不能,希望有高手给个答案,谢谢

不能,因为虽然传的是指针,但是实质上是传值,只是传的是指针的值,你在程序内修改了指针的值,但是这仅仅是修了该函数内部的那个指针,调用该函数的函数的指针并没有改变,所以起不到修改的作用。
所以要想让他起作用有两种方法,传指针的引用或传指针的指针
void swap(int & (*pt1), int &(*pt2));

void swap(int **pt1, int **pt2);

不能够实现数据的交换。
因为,这样简单的地址交换,其实也是属于值传递的。只是交换的是地址而不是变量。

楼上正解,用指向指针的指针,或者用引用