zoukankan      html  css  js  c++  java
  • 调用函数时传指针注意问题

    指针是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  }
  • 相关阅读:
    java学习--工具类学习之Arrays(1)
    509. 斐波那契数
    572. 另一个树的子树
    cmd中的标准文件重定向
    ng正则使用(持续更新)
    MySQL基准测试
    mysql_connect 弃用之后使用mysqli替换需要注意事项
    数据迁移到rds时候犯下的低级错误
    MySQL 架构与历史
    mysql中涉及到钱的字段如何设计
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/3939708.html
Copyright © 2011-2022 走看看