正常值参数

来源:互联网 发布:手机阅读软件知乎 编辑:程序博客网 时间:2024/04/27 14:38

因为ptempptr收到一份间的地址,即使我们改变ptempptr,这并没有改变,PPTR点价值。因此程序打印

565

尽管本身的地址是按值传递的,你仍然可以解引用地址永久改变在该地址的值!这是区别通过地址参考传值

下一个问题是,“如果我们要修改实参的地址范围内的功能“。原来,这是非常容易的。你只需要使用按引用传递指针本身(有效传递地址以供参考)。你已经学会了,通过引用传递的价值体现在功能恢复到原来的参数的任何变化。所以在这种情况下,我们告诉编译器,使ptempptr地址有任何变化应反映回PPTR!做一个指针的语法有点奇怪(易得向后):int *和PPTR。然而如果你得到它时,编译器将给你一个错误

下面的程序说明了使用参考一

1234567891011// 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()
voidSetToSix(int*&pTempPtr);

当我们再次运行该程序与此版本的函数我们得到的

566

这表明调用settosix()确实改变的地址

很奇怪的是,这里的结论是,引用指针,与指针地址是按值传递的。通过地址传递价值参考来自于事实,我们可以取消引用地址改变原有的争论我们可以与正常值参数



0 0
原创粉丝点击