Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过引用传递是作为指针传递的特殊情况吗? 我完全不理解C++中的引用传递。我已经阅读了如下相关问题 虽然我理解它与指针不同,但我并不完全理解C++中的引用概念。它是如何工作的?我觉得引用是指针的一个特例,可以由编译器实现。但它在编程级别上的行为不同。对吗_C++_Pointers_Parameters_Reference_Conceptual - Fatal编程技术网

通过引用传递是作为指针传递的特殊情况吗? 我完全不理解C++中的引用传递。我已经阅读了如下相关问题 虽然我理解它与指针不同,但我并不完全理解C++中的引用概念。它是如何工作的?我觉得引用是指针的一个特例,可以由编译器实现。但它在编程级别上的行为不同。对吗

通过引用传递是作为指针传递的特殊情况吗? 我完全不理解C++中的引用传递。我已经阅读了如下相关问题 虽然我理解它与指针不同,但我并不完全理解C++中的引用概念。它是如何工作的?我觉得引用是指针的一个特例,可以由编译器实现。但它在编程级别上的行为不同。对吗,c++,pointers,parameters,reference,conceptual,C++,Pointers,Parameters,Reference,Conceptual,通过引用传递的概念是将指针传递给该值的特殊情况吗?很多时候,我不得不在编程时决定是使用引用还是指针。此外,我想了解基本原则。是否只复制了内存地址?引用是一个带有一些特殊限制的指针。引用决不能取消初始化。创建引用时,它必须指向某个对象。这在需要不为空的“指针”时非常有用 此外,引用不能更改其持有的地址,因此它是一个常量指针 它有一些很好的语法糖,允许它使用点运算符,使它在从按值代码更改为按引用代码时非常有用 实际上,将函数中的引用用作参数或返回值通常表示“按地址,不能为NULL,并且必须是有效对象

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

引用是一个带有一些特殊限制的指针。引用决不能取消初始化。创建引用时,它必须指向某个对象。这在需要不为空的“指针”时非常有用

此外,引用不能更改其持有的地址,因此它是一个常量指针

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

实际上,将函数中的引用用作参数或返回值通常表示“按地址,不能为NULL,并且必须是有效对象”。使用指针通常表示“可以为NULL,所以NULL必须是handle”。By pointer还允许指针运算和操作

你应该使用的是你最喜欢的,假设你两者都懂。我自己更喜欢指针

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

引用是具有一些特殊限制的指针。引用决不能取消初始化。创建引用时,它必须指向某个对象。这在需要不为空的“指针”时非常有用

此外,引用不能更改其持有的地址,因此它是一个常量指针

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

实际上,将函数中的引用用作参数或返回值通常表示“按地址,不能为NULL,并且必须是有效对象”。使用指针通常表示“可以为NULL,所以NULL必须是handle”。By pointer还允许指针运算和操作

你应该使用的是你最喜欢的,假设你两者都懂。我自己更喜欢指针

编辑:
正如这里的评论所指出的,您不能直接获取引用的地址,因为它将返回引用所指的地址。这是另一个不适用于普通指针的限制。

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

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

它的实现方式由实现(令人震惊的是…)决定(是的,您的编译器)。如果您遇到使用引用与指针的难题,通常遵循以下原则:如果您需要执行指针算术运算,或者传入值可以选择为NULL,请使用指针,否则使用引用(是的,您有时会同时使用引用和指针引用)。如何实现由实现决定(令人震惊的是…)(是的,你的编译器)。如果你遇到使用引用和指针的难题,通常遵循以下步骤:如果你需要做指针算术运算或者输入值可以是空的,使用指针,否则使用引用(是的,你有时会同时使用这两种方法,也称为指针引用)。引用的另一个属性,引用本身没有内在地址;当应用
运算符(&()
时,引用的地址是返回的“地址”(当然,除非被类型重写)。您可以获取引用的地址;返回的值是它引用的地址;而不是某个中介(如指针变量的地址)。也许我没有说清楚。值得注意的是,这也是为什么不能有指向引用的指针,但可以有指向指针的引用的原因。引用的另一个属性是,引用本身没有内在地址;引用的地址是
运算符(&)时返回的“地址”应用了
(当然,除非被类型重写)。您可以获取引用的地址;返回的值是它引用的地址;而不是某些中介(如指针变量的地址)。也许我没有说清楚。值得注意的是,这也是为什么不能有指向引用的指针,但可以有指向指针的引用的原因。