关于指针调用的一些问题
来源:百度知道 编辑: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;
}
我也不知道能不能,希望有高手给个答案,谢谢
{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);
不能够实现数据的交换。
因为,这样简单的地址交换,其实也是属于值传递的。只是交换的是地址而不是变量。
楼上正解,用指向指针的指针,或者用引用