C ++中的指针和引用之间是不是存在任何开销差异[重复]

Posted

技术标签:

【中文标题】C ++中的指针和引用之间是不是存在任何开销差异[重复]【英文标题】:Is there any overhead difference between a pointer and reference in C++ [duplicate]C ++中的指针和引用之间是否存在任何开销差异[重复] 【发布时间】:2018-11-16 11:36:59 【问题描述】:

传递指针和通过引用传递变量之间有什么性能差异吗?我在内部假设它们都使用指针,但想知道是否存在细微差别。

例如

int v = 5;

按指针

void MyFunc(int* P);
MyFunc(&v);

或参考

void MyFunc(int& R);
MyFunc(v);

【问题讨论】:

你为什么不检查生产的组件来确定呢?不,没有区别。 你必须反汇编代码,标准没有说明引用是如何实现的。我倾向于假设引用是作为指针实现的,并使用它们来防止函数实现中潜在的不必要开销,即if(ptr) int *p = 5; 将是一个非常糟糕的主意...p 现在指向地址 5 ... 在你的例子中,MyFunc 调用都需要一个指针。 这真的取决于你的编译器。从理论上讲,没有什么可以阻止编译器使用不同的机制传递引用和指针。实际上,我还没有遇到在机器代码中以不同方式表示它们的编译器。 【参考方案1】:

两种方法的性能相当。

指针和引用在语法上是不同的,但它们在运行时性能和生成的代码方面大部分时间是相同的。

【讨论】:

以上是关于C ++中的指针和引用之间是不是存在任何开销差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章

共享指针和具有自定义删除器的唯一指针之间的语法差异背后的任何原因

C# 中的 ++i 和 i++ 之间是不是存在性能差异?

Java的引用c++的引用和C指针的区别

EasyMock 中“相同”和“eq”之间的区别

C数组和指针

c 中的引用类型在delphi中如何使用