网站首页 > 基础教程 正文
我们都知道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的地址是一个形参,值传递,你在函数内修改它的地址对于传入的地址没有影响,这样当然就爆炸了。。。。所以如果需要让这个指针的地址是可变的,应该传入的参数是*&的形式
最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!
- 上一篇: C/C++编程笔记:通过指针传递 Vs 通过引用传递
- 下一篇: C++ 引用 C++ 引用修饰器
猜你喜欢
- 2024-10-09 探讨C++中引用变量的原理以及特点
- 2024-10-09 C++编程:函数参数类型-引用、指针、值
- 2024-10-09 C++ 引用,如何定义对象的常引用?linux C++第50讲
- 2024-10-09 深入浅出C++引用:理解与应用 c++引用的含义
- 2024-10-09 c++引用详解 c++引用怎么写
- 2024-10-09 c语言-指针和引用的理解 c中指针和引用的区别
- 2024-10-09 2 C++重点概念理解系列2-理解引用的本质
- 2024-10-09 C++|指针,理解指针从为什么需要指针这种数据类型开始
- 2024-10-09 C|函数指针和指针函数的联系与区别
- 2024-10-09 const、指针、引用的关系 const与指针的关系
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)