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本身。

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

  • 相关阅读:
    软件测试
    python学习之路
    好用的在线画图工具processon
    spring-boot集成dubbo
    公众号开放,关注软件开发过程中的哪些坑
    crontab 中curl命令无法正常执行
    近一月翻阅资料小结
    nginx+tomat8负载后,利用redis实现tomcat8的session共享
    centos7 安装nginx
    centos 上安装redis 3.0.5
  • 原文地址:https://www.cnblogs.com/fromzore/p/10054965.html
Copyright © 2011-2022 走看看