【问题标题】:C++ reference pointer as parameter to alter pointerC++ 引用指针作为参数来改变指针
【发布时间】:2019-03-04 07:50:51
【问题描述】:

我最近遇到了*& 作为函数中的参数。
据我了解,它类似于**

为什么在改变指针的函数中需要它? 例如。使用 new 关键字

假设我有一个指针int* a,如果我想在该函数中执行a = new int;,为什么必须将参数作为“指针引用”传递?

【问题讨论】:

  • int *&int*,因为 int&int。指针并没有什么特别之处,它们只是有一个有趣的拼写。
  • @molbdnilo 哈哈,这实际上是有道理的。谢谢

标签: c++ pointers reference pass-by-reference


【解决方案1】:

如果函数以int*为参数,那么指针本身是传值的,这意味着函数内部对指针本身(不是指针)的任何修改都与原始指针无关。例如

void foo(int* a) { a = new int; }

int* a = nullptr;
foo(a);
// a is still nullptr here

如果您将参数类型更改为int*&,它会有所不同。

void foo(int*& a) { a = new int; }

int* a = nullptr;
foo(a);
// a gets modified

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    相关资源
    最近更新 更多