【问题标题】:what's the difference between these two pointer code [duplicate]这两个指针代码有什么区别[重复]
【发布时间】:2016-10-11 17:00:23
【问题描述】:

我找到了这两个不同的来源,但它们的作用完全相同。我想知道是否有区别,但我无法弄清楚。

谁能告诉我区别以及我应该什么时候使用哪个?

这是第一个:

void function1(int *x) {
    *x = 100;
}

int main() {
    int var1 = 10;

    function1(&var1);
    cout << var1 << endl;
}

这是第二个:

void function2(int &x) {
    x = 100;
}

int main() {
    int var2 = 10;

    function2(var2);
    cout << var2 << endl;
}

【问题讨论】:

  • 在function1 中,nullptr 是一个有效参数(应该检查)。
  • 有一些样式约定更喜欢修改对象的指针。

标签: c++


【解决方案1】:

int *x 是一个指针,而int &amp;x 是一个引用。可能最大的区别是您无法更改 reference 指向的位置。

【讨论】:

    【解决方案2】:

    第一个是指针,第二个是引用。这些想法有一些相似之处,但也存在差异。

    指针是一种 C 和 C++ 机制,更“纯粹”,但为您提供了更多高级概念(如指针算术)的可能性。引用仅是 C++,并且更安全、更隐含,因为在使用被引用的变量时,引用的语法与普通变量相同。如果您想使用或更改指针的值,则指针会更加明确,因为您必须使用 *var 显式取消引用它,并显式获取它。

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多