3

如果我想要一个指向另一个变量的指针,我可以通过使用 & 为变量提供地址来实现它。

int foo = 10;
int *bar = &foo;

现在,如果我遵循与上述相同的逻辑,而是创建一个引用类型。

int foo = 10;
int &bar = &foo; 

我认为这应该有效,但事实并非如此。为什么?

4

3 回答 3

4

语法是

int &bar = foo;

参见维基百科

于 2012-07-20T22:46:59.273 回答
3

因为指针和引用不是一回事。您可以将引用视为仅意味着“另一个名称”或“别名”。

换句话说,bar只是foo您示例中的另一个名称。当你这样做时int &bar = foo;,你想bar成为另一个名字foo,你不想分配给 to 的foo地址bar。但是,指针存储它指向的对象的地址,因此对于指针,您需要 address-of 运算符来获取地址foo并将其分配给bar指针。

于 2012-07-20T22:58:49.223 回答
2

它不起作用,因为引用需要使用与引用相同的类型进行初始化。在这种情况下:

int foo = 10;
int &bar = foo;

当您尝试以这种方式初始化它时:

int &bar = &foo;

您正在尝试使用指向 int 的指针初始化 int 引用。类型不匹配。

引用与指针不同,尽管编译器可能会将其实现为引擎盖下的指针。参考文献基本上说“当我提到 bar 时,我真的在谈论 foo”。

于 2012-07-20T22:49:59.363 回答