C++ 通过引用或指针进行访问的性能差异
此代码之间是否存在性能差异:C++ 通过引用或指针进行访问的性能差异,c++,performance,pointers,reference,C++,Performance,Pointers,Reference,此代码之间是否存在性能差异: struct foo example; my_function(&example); void my_function(struct foo *example); struct foo example; my_function(example); void my_function(struct foo &example); 该代码: struct foo example; my_functio
struct foo example;
my_function(&example);
void my_function(struct foo *example);
struct foo example;
my_function(example);
void my_function(struct foo &example);
该代码:
struct foo example;
my_function(&example);
void my_function(struct foo *example);
struct foo example;
my_function(example);
void my_function(struct foo &example);
我认为这两种方法都是不同的,但是它们之间有什么性能差异吗? < P>你所发布的代码是C++,而不是C,因为C缺少引用。
,C++中的引用类型与指针几乎没有区别,只是它不能在初始化之后指向不同的点(不能存储不同的地址)。实际上,它是一个指针,从指针到隐藏的指针对象,具有指针语义
对于引用,在引用应该始终指向有效内容的情况下,您可以获得一些额外的安全性。例如,您不能将空值分配给引用。因此,从C++的观点来看,很多时候都鼓励使用引用,因为它有更多的约束和变窄的选项可能意味着更少的滥用它的方式。 从性能的角度来看,在一个非常理论化的领域中,优化编译器可能会使用这样一个事实,即引用一旦分配给它,就不能更改地址。实际上,大多数优化编译器并不笨到需要程序员的帮助,许多人已经证明,优化编译器发出相同的程序集,而不管您使用的是引用还是指针因此,您的问题的实际答案通常是否定的,没有性能差异。第二个代码片段在C中无效。C中没有传递引用。您用C标记了您的问题,但C没有引用。你是说C++吗?除此之外,在性能方面不应该有任何区别。@Olaf我希望你的意思是说C没有引用?引用是一个隐藏指针语义的指针。正如其他人已经说过的,C没有引用,只有(显式)指针,所以这个问题毫无意义