相信每个人学习数据结构的时候都有这么一个令人头疼的问题,为什么在创建链表和插入节点的时候,形参是这样的void  insert(node *&root,int x),而输出,查找修改的时候,形参又是这样的void  search(node *root,int x)。传入的都是root,但是参数的类型为啥不一样呢?为什么root要取地址给指针呢?这到底是为什么呢?下面我就给出正确答案。

其实&在这里并不是取地址符,而是只引用,其实c++和java一样也是有引用的,只是因为c++有指针所以引用是几乎用不到的。引用的作用是,在函数中修改变量会直接修改原变量。这么做的原因是,如果不使用引用,对root的修改就无法作用到原变量了,因为root是node指针类型,也就是root现在是个地址,所以不用引用是改变不了root本身的。search函数中的root前不用加引用是因为search修改的是*root的值,修改的是root指向的内容而不是root本身。

一般来说,如果函数中需要新建结点,即对链表的结构作出修改,就需要加引用;如果只是修改当前链表中的内容,或者仅仅是遍历输出,就不用加引用。

转载于:https://www.cnblogs.com/fromzore/p/10054965.html

关于c/c++语言中*和*使用的详细分析相关推荐

  1. C#语言中的重要知识详细介绍

    微软的.NET推出后,关于C#的有关文章也相继出现,作为微软的重要的与JAVA抗衡的语言,C#具有很多优点.本文将选一些C#语言中的重要知识详细介绍: 第一章:参数 1.1 IN 参数 c#种的四种参 ...

  2. 分析编程题c语言,二级C语言部分上机编程题详细分析

    <二级C语言部分上机编程题详细分析>由会员分享,可在线阅读,更多相关<二级C语言部分上机编程题详细分析(6页珍藏版)>请在人人文库网上搜索. 1.二级C语言部分上机编程题详细分 ...

  3. 内核中container_of宏的详细分析【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637597.html 内核中container_of宏的详细分析 16年2月28日09:00:37 内核中 ...

  4. CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析

    CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析   以下为SMDK开发板startup.s部分启动代码.   ;------------------------------- ...

  5. 转股票中KDJ线的详细分析

    KDJ即随机指标. 原理:用目前股价在近阶段股价分布中的相对位置来预测可能发生的趋势反转. 算法:对每一交易日求RSV(未成熟随机值) RSV=(收盘价-最近N日最低价)/(最近N日最高价-最近N日最 ...

  6. python语言中运算符号_详细介绍Python语言中的按位运算符

    <从问题到程序:用Python学编程和计算>--2.11 补充材料 本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.11节,作者:裘宗燕 ...

  7. C语言中十六进制字符串处理以及分析

    通过命令行传递十六进制字符串参数 程序运行 ./test_main 0x12345678 方法1:每一字节存在一个char里 方法2:直接转成10进制数 int main(int argc, char ...

  8. js中cookie的使用详细分析

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将d ...

  9. JAVA多线程中join()方法的详细分析

    虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像 ...

最新文章

  1. Windows 2008远程桌面多用户登陆的配置方法 - z
  2. zookeeper命令行(zkCli.shzkServer.sh)使用及四字命令
  3. Linux vim剪切/删除命令(结合p粘贴使用就是剪切)
  4. 高精度加法(非负)和大数阶乘及和汽水问题
  5. 外媒称三星已对苹果折叠屏订单进行采样
  6. linux 清理cache中的内存
  7. 快讯分类_如何掌握Google快讯
  8. 独立t检验和配对t检验_配对学生的t检验是什么?
  9. 锁(synchronized和Lock)
  10. shopnc linux im安装教程,shopnc编译安装IM服务器node.js
  11. Hive 的数据怎么导入导出?
  12. Java实习生是做什么的?Java实习生工作内容
  13. 字符串的初始化(详解)
  14. 关于Python和自动化
  15. 未来的经济——从共享充电宝来看
  16. Pytorch+PyG实现GraphConv
  17. TigerGraph笔记(一)安装和卸载(centos)
  18. K1 K2 傻瓜刷机、自动刷入Breed 华硕Padavan 辅助工具 (v2.1)
  19. 微信私域流量社群搭建sop流程步骤运营管理方案计划书表格
  20. Java Learning 000 搭建开发环境

热门文章

  1. 转:Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  2. 华硕飞马3S,日常使用续航测试
  3. 解决Eclipse报errors running builder ‘javascript validator’ on project
  4. java学习避免死锁
  5. Java静态变量的初始化
  6. 【堪萨斯州立大学】电子和计算机工程系智能能源研究室、硬件安全实验室招募博士,提供多个全额奖学金机会...
  7. 微软亚研院 CVPR 2021 9篇视觉研究前沿进展
  8. “3D几何与视觉技术”全球在线研讨会第八期~识别3D中的物体和场景
  9. CV新赛事|常见天气分类
  10. 高中数学程序图转化为c语言,程序转化成逻辑图