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


    指针是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  }
  • 相关阅读:
    RE
    【LeetCode】198. House Robber
    【LeetCode】053. Maximum Subarray
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】238.Product of Array Except Self
    【LeetCode】042 Trapping Rain Water
    【LeetCode】011 Container With Most Water
    【LeetCode】004. Median of Two Sorted Arrays
    【LeetCode】454 4Sum II
    【LeetCode】259 3Sum Smaller
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/3939708.html
Copyright © 2020-2023  润新知