zoukankan      html  css  js  c++  java
  • 关于c/c++语言中*&和*使用的详细分析

    相信每个人学习数据结构的时候都有这么一个令人头疼的问题,为什么在创建链表和插入节点的时候,形参是这样的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本身。

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

  • 相关阅读:
    初学者常用的LINUX命令
    logging模块全总结
    logging模块初识
    xpath知多少
    selenium常用的API
    系统测试基础(适合入门)
    JavaScript正则表达式(一)
    webpack2学习(二)
    webpack2学习(一)
    SQL语句学习
  • 原文地址:https://www.cnblogs.com/fromzore/p/10054965.html
Copyright © 2011-2022 走看看