• 调用函数时传指针注意问题


    指针是C/C++的强大工具,但也是最容易出错的地方。

    C++在函数调用时支持三种方式:赋值传递,引用传递,指针传递。

    1.赋值传递是在函数调用栈内创建临时对象,并将实参对象复制到临时对象,函数内部只能操作实参对象的副本。这种方式对于基本类型倒无所谓,但是对于庞大的类对象,则会带来很大的调用代价。

    2.引用传递是通过实参对象的别名来引用实参对象,并不将实参对象进行拷贝,函数内部可以直接操作实参对象,因此它的优点是高效,适合传递大型对象,同时这种方式也可以用作从函数返回数据的方式,它的缺点就是实参对象要在函数调用之前就必须存在。

    3.指针传递本质上也是赋值传递,指针变量的大小固定,因此也比较适合传递大型对象,当然也可以用作从函数中返回数据。同时,初学者容易犯的错误来了,比如想要用以下函数获取对象指针:

    1 void getMethod(Method* p_method)
    2 {
    3   p_method = new Method();
    4 }

    但是函数只是操作了实参对象的副本,我们真正想改变的实参对象并未修改,因此真正的方法是:

    1  void getMethod(Method** pp_method)
    2  {
    3    *pp_method = new Method();
    4  }
  • 相关阅读:
    JVM
    OLAP
    rocketMq学习
    redis的使用小记
    CRT配置端口转发
    冒泡排序
    spring AOP-切面编程
    linux下对jar包和war包进行重新打包
    oracle-sql性能优化
    遍历List,根据子项的某个属性分组
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/3939708.html
Copyright © 2020-2023  润新知