如果我想让一个指针指向另一个变量,我可以通过给变量指定地址&来实现。
int foo = 10;
int *bar = &foo;现在,如果我遵循上面相同的逻辑,而不是创建一个引用类型。
int foo = 10;
int &bar = &foo; 我认为这应该行得通,但它没有。为什么?
发布于 2012-07-21 06:58:49
因为指针和引用不是一回事。你可以把引用看作是“别名”或“别名”的意思。
换句话说,在您的示例中,bar只是foo的另一个名称。在执行int &bar = foo;时,您希望bar成为foo的另一个名称,而不希望将foo的地址分配给bar。但是,指针存储它所指向的对象的地址,因此对于指针,您需要address-of运算符来获取foo的地址并将其分配给bar指针。
发布于 2012-07-21 06:46:59
语法是
int &bar = foo;参见wikipedia。
发布于 2012-07-21 06:49:59
它不起作用,因为引用需要用它所引用的相同类型进行初始化。在这种情况下:
int foo = 10;
int &bar = foo;当您尝试以这种方式初始化它时:
int &bar = &foo;您正在尝试使用指向int的指针来初始化int引用。类型不匹配。
引用与指针不同,尽管编译器可以将其实现为幕后的指针。一个引用基本上是这样说的:“当我提到bar时,我实际上是在谈论foo”。
https://stackoverflow.com/questions/11587880
复制相似问题