C++参数传递中**和*&的区别

标签 c++

我已经在一个列表上实现了操作,其中一个是添加,因为我不想返回任何东西,我读到我必须使用 **,它有效,但我在另一个地方看到它被传递为 *&,但我不知道有什么区别

addNode( node *&head, int 值) addNode(node **head, int value)

有什么区别,哪个更好,或者它们的意思相同? 我知道第二个是指向指针的指针。

谢谢

最佳答案

第一个 (**) 是一个指向指针的指针,第二个 (*&) 是一个引用 指向一个指针。

引用和指针在概念上非常相似。但是有一些重要的区别,例如:

  • 引用不能为 NULL(但它可以引用指向 NULL 的指针)。
  • 您不能修改引用以引用其他内容。
  • 您需要取消引用指针才能访问该值。

有关更多差异,请参阅此相关问题:

关于C++参数传递中**和*&的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834067/

相关文章:

c++ - 使用工厂填充元组并避免复制

c++ - macOS 中的 CMake,预编译头文件 (.pch) 支持

Android、OpenGL ES 2.0、ndk - glCheckFramebufferStatus 返回 GL_FRAMEBUFFER_UNSUPPORTED

c++ - TCP 代理 - 互斥量

C++ 继承 : two subclasses of the same class as member variables

c++ - 对象间共享数据的线程安全访问

c++ - 带有 IRP_MJ_WRITE 的 IoBuildAsynchronousFsdRequest

c++ - 如何在 C++ 中使用映射或 vector 对任意数量的输入进行内存?

c++ - 对游戏对象层次结构进行建模的最优雅、最有效的方法是什么? (设计麻烦)

c++ - 空函数宏