C++:无法从foo转换为foo*

Nic*_*ner 3 c++ syntax pointers

我有一个方法:

odp(foo& bar);
Run Code Online (Sandbox Code Playgroud)

我试着称之为:

foo baz;
odp(&baz);
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

error C2664: "odp" cannot convert parameter 1 from 'foo *' to 'foo &'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我不是在提及参考baz吗?

更新:也许我对指针和引用之间的关系有误解.我认为它们是相同的,除了引用不能为空.这是不正确的?

AnT*_*AnT 7

将一元运算&符应用于对象时,将获得指向该对象的指针,而不是引用.在这种情况下你需要一个参考.为了初始化引用参数,您根本不需要应用任何运算符:lvalue对象可以立即用于初始化相应类型的引用.

"指针"和"引用"概念之间的非正式同义(如"通过指针传递"和"通过引用传递")是C语言特有的.但在C++中,它们意味着两个完全不同的东西.