因为ptempptr收到一份间的地址,即使我们改变ptempptr,这并没有改变,PPTR点价值。因此,该程序打印
565
尽管本身的地址是按值传递的,你仍然可以解引用地址永久改变在该地址的值!这是区别通过地址(参考)从传值。
下一个问题是,“如果我们要修改实参的地址范围内的功能?“。原来,这是非常容易的。你只需要使用按引用传递指针本身(有效传递地址以供参考)。你已经学会了,通过引用传递的价值体现在功能恢复到原来的参数的任何变化。所以在这种情况下,我们告诉编译器,使ptempptr地址有任何变化应反映回PPTR!做一个指针的语法有点奇怪(易得向后):int *和PPTR。然而,如果你得到它时,编译器将给你一个错误。
下面的程序说明了使用参考一点
1
2
3
4
5
6
7
8
9
10
11
// pTempPtr is now a reference to a pointer to pPtr!
// This means if we change pTempPtr, we change pPtr!
void SetToSix(int *&pTempPtr)
{
using namespace std;
pTempPtr = &nSix;
// This will print 6
cout << *pTempPtr;
}请注意,您还必须更新函数原型以上主要考虑的settosix()新原型:
|
1
2
3
|
//
Function prototype so we can define//
SetToSix below main()void
SetToSix(int
*&pTempPtr); |
当我们再次运行该程序与此版本的函数,我们得到的:
566
这表明调用settosix()确实改变间的地址!
很奇怪的是,这里的结论是,引用指针,与指针地址是按值传递的。通过地址传递价值(参考)来自于事实,我们可以取消引用地址改变原有的争论,我们可以不与正常值参数。
本文深入探讨了指针与引用的区别,特别是在C++中如何利用指针的引用特性来实现参数值的更改。通过示例代码展示了如何通过引用传递指针以达到修改原始指针指向的目的。
11万+

被折叠的 条评论
为什么被折叠?



