Is通过引用传递是作为指针传递的一种特殊情况

Is passing by reference is a special case of passing as pointer?

本文关键字:一种 情况 指针 引用 Is      更新时间:2023-10-16

我还没有完全理解c++中的引用传递。我已经读过以下相关的问题。

  • c++中指针变量和引用变量的区别是什么?
  • 在c++中,通过指针传递比通过引用传递有好处吗?
  • 何时使用引用与指针

但是即使我知道它与指针不同,我也不完全理解c++中引用的概念。它是如何工作的?引用似乎是指针的一种特殊情况,可能由编译器实现。但在编程层面上表现不同。对吗?

通过引用传递的概念是传递指向该值的指针的特殊情况吗?很多时候,我不得不决定是使用引用还是指针,而编程。此外,我想了解其基本原理。只复制内存地址吗?

引用是具有一些特殊限制的指针。引用永远不能被反初始化。当创建引用时,它必须指向某些东西。当想要一个不为NULL的"指针"时,这很有用。

此外,引用不能改变它所保存的地址,因此它是一个常量指针。

它有一些不错的语法糖,允许它使用点运算符,使它在从按值代码更改为按引用代码时非常有用。

在实践中,在函数中使用引用作为参数或返回值通常表示"按地址,不能为NULL,必须是一个有效对象"。使用指针通常表示"可能是NULL,所以必须处理NULL"。By指针还允许指针运算和操作。

你应该使用的是你觉得最舒服的,假设你理解了这两种语言。我自己更喜欢指针。

编辑:正如在这里的注释中指出的那样,您不能直接获取引用的地址,因为它将返回引用所引用的地址。这是另一个不适用于平均指针的限制

是的,它本质上与指针相同,但一个更好和更安全的版本,因为指针地址不能更改或设置为空。我认为它主要是一种拥有漂亮的函数接口的方法,而不需要接口的用户担心指针——即函数保持简单,但对象不被复制,只是它的地址。类复制构造函数是引用至关重要的一个典型例子。

相关文章: