【问题标题】:Difference between & and * in function parameters [duplicate]函数参数中&和*之间的区别[重复]
【发布时间】:2012-11-11 02:54:53
【问题描述】:

可能重复:
difference between a pointer and reference parameter?

使用 C++ 我想知道在参数中使用 & 和 * 有什么区别?

例如:

void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

这显然会交换整数 a 和 b。但是下面的函数不会完全一样吗?

void swap(int *a, int *b)
{
    int temp = *b;
    *b = *a;
    *a = temp;
}

我只是想知道什么时候适合使用每一种,也许每一种的优点。

【问题讨论】:

  • 通常的座右铭是“尽可能使用引用,必须使用指针”。
  • 另见herehere
  • 还有this

标签: c++


【解决方案1】:

指针和引用的区别在于指针可以指向“无”,而引用不能。您的第二个示例应该在取消引用它们之前对指针进行空检查;没有必要对引用这样做。

【讨论】:

  • 确实,可以遵循的一种良好编码实践是输入参数(您不想复制)应该是 const 引用而不是指针,并且输出可以是指针。这样您就不必检查 input-args 是否为 null,如果有任何问题,则函数调用者需要处理该问题
猜你喜欢
  • 2011-03-11
  • 1970-01-01
  • 2012-09-24
  • 2013-02-14
  • 2020-03-05
  • 2010-12-12
  • 2011-10-08
  • 2015-07-18
相关资源
最近更新 更多