引用和指针之间的区别

use*_*450 7 c++ pointers reference

可能重复:
C++中指针变量和引用变量之间有什么区别?

C++中的Class和mean是什么?它与Class*有什么不同?

Class& foo;
Class* foo;
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 20

&version表示引用,而*version表示指针.对于典型的SO帖子而言,差异太大了.我建议你从C++ FAQ lite开始

http://www.parashift.com/c++-faq-lite/references.html

我通常不喜欢用"你应该使用谷歌"答案来回答帖子.然而,这是我强烈建议你google的一个主题.特别是谷歌"c ++指针与参考".关于这个主题有大量的信息,这些页面的讨论将胜过我们在这里写的任何内容.

  • 是的,我知道这是旧的.但是在谷歌搜索"参考和指针之间的差异"之后,我已经登陆了这个页面.这是结果#3. (3认同)
  • 呃,我用Google搜索并来到这里......字面意思是我的问题. (2认同)

Ste*_*ini 6

*是一个指针,&是一个参考.两者之间的区别在于指针是必须被解除引用的存储区域,例如.通过 - >运算符,以便"看到"一个类实例.引用是"别名",只是同一个类实例的替代名称.您不需要将 - >运算符与引用一起使用.您使用点运算符.

就个人而言,我很少使用引用,主要是当我有一个我在堆栈上分配的值对象时.new运算符始终返回一个指针,然后您必须取消引用该指针.此外,引用中最棘手的问题之一是您不能将它们设置为NULL.在某些情况下,拥有一个接受对象指针或NULL的函数是很方便的.如果您的函数接受引用,则无法传递NULL(但是您可以使用Null对象模式)


Tho*_*day 5

Class*可以指向任何类对象,也可以不指向任何类对象.

一个Class&always总是指向一个类对象,并且永远不会指向另一个类对象.

此外,我相信Bjarne是那些声称"C中的数组无法修复"的人的成员,一个Class*可以指向一个完整的dang-dang 类对象数组,在内存中一个接一个地排列,在C中绝对没有办法判断一个Class*是指一个还是多个.