参数传递(引述,指针,值传递)C++11

参数传递(引用,指针,值传递)C++11

C++中,函数的参数传递方式有值传递、地址传递。传地址有指针和引用方式。
在函数参数中,传地址的理由有:
1.使被调函数可以修改主调函数中的数据对象;
2.传地址可以减少数据拷贝,提高程序执行速度。

那么,何时使用值传递,何时使用地址传递(指针和引用)?
下面是一些写代码时会遇到的一些情况

被调函数使用参数对象时,不会修改数据对象

  1. 如果要传入函数的数据对象较小,比如是内建数据类型或小规模的结构体,那么使用值传递;
  2. 如果数据对象是数组,那么使用指针(这也是你唯一的选择)。指针添加const修饰;
  3. 如果数据对象是大规模的结构体,使用const指针或const引用;
  4. 如果数据对象是class对象,使用const引用。这也是C++中传递class对象的标准做法;

被调函数使用参数对象时,会修改数据对象

  1. 数据对象是内建数据类型,使用指针(func(&var)表明函数中要修改var,比使用引用的调用形式func(var)可读性好);
  2. 数据对象是数组,指针是唯一的选择;
  3. 数据对象是结构体,使用指针或引用;
  4. 数据对象是class对象,使用引用;

当然,以上只是一般情况。特殊情况另外讨论。