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 ++中的指针和引用之间是不是存在任何开销差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章