c++中指针的引用 *&作为参数传递
来源:互联网 发布:mac远程桌面连接工具 编辑:程序博客网 时间:2024/06/06 00:33
我们都知道c++中的参数传递是值传递,想要通过函数修改形参,一般使用指针或者引用。
那么有时候我们对于传入的指针地址希望做修改怎么办呢?
今天在写一个树结构的题时碰到这个问题
大概代码是
void insert_array(TreeNode *&node, int *array, int left, int right){ if(left > right) return; int min_val = array[left]; int min_index = left; for(int i = left+1; i < right; i++) {if(array[i] < min_val){ min_val = array[i]; min_index = i;} } node = new TreeNode(); //这里如果node是指针就出错了 node->val = min_val; insert_array(node->left, array, left, min_index-1); insert_array(node->right, array, min_index + 1, right);}主要是倒数三四行代码,之前传入的参数为TreeNode *node结果一直错,后来加上引用就对了。
原因其实也简单,就是我们把指针当作形参传入时,传的是地址,事实上这个地址的值也是形参。
而
node = new TreeNode();
应该相当于
TreeNode *newNode = new TreeNode();node = newNode;
new一个值会产生一个新的地址,那么就需要修改node的地址,但是我们传入的node的地址是一个形参,值传递,你在函数内修改它的地址对于传入的地址没有影响,这样当然就爆炸了。。。。所以如果需要让这个指针的地址是可变的,应该传入的参数是*&的形式
阅读全文
0 0
- c++中指针的引用 *&作为参数传递
- C或C++中函数的参数传递包括:值传递、指针传递、引用传递
- C或C++中函数的参数传递——值传递、指针传递、引用传递
- .net中引用传递对象作为参数传递的问题
- 指针和引用作为函数传递参数
- 值 引用 指针作为参数传递
- 图解C/C++中函数参数的值传递、指针传递与引用传递
- 图解C/C++中函数参数的值传递、指针传递与引用传递
- C指针解析及指针作为参数传递的应用
- C语言中指针数组作为参数传递修改内容
- C语言数组与指针作为传递参数的使用
- [C++]关于指针作为函数参数传递
- [C++]关于指针作为函数参数传递
- C指针作为函数参数引用
- 指针作为参数传递
- 指针作为参数传递
- 指针作为参数传递
- 漫谈C指针第十一讲---参数的引用传递
- Java Basic IO,Basic NIO,纲要
- 计算混淆矩阵和Kappa系数
- ios-反射
- C++继承时构造与析构函数以及using,继承时的遮蔽浅谈
- CopyOnWriteArrayList
- c++中指针的引用 *&作为参数传递
- Zookeeper学习笔记(一)简介
- 利用sort对结构体排序
- 统计数字字符的个数
- OSI七层协议
- [内核源码][Makefile]修改linux-0.12代码
- 自己写一个java.lang.reflect.Proxy代理的实现
- java学习笔记(2)
- 自定义View——仿支付宝支付弹窗界面