为什么要为地址运算符和引用声明符共用&符号(&)?

时间:2012-05-30 12:04:33

标签: c++ pointers reference standards ampersand

在C ++中,&符号(&)可用于获取左值,函数指示符或限定名称的地址。

int y;
int* p_to_y = &y;

该字符在C ++中作为参考声明符共享使用。 。

int y;
int& y_alias = y;

在粗略了解C之后学习C ++时,这种双重用法给我带来了很多困惑!我理解使用符号的上下文会有所不同,但鉴于引用和指针是不应混淆的重要概念,任何人都可以建议为什么&被回收而不是使用新的替代符号?

2 个答案:

答案 0 :(得分:5)

  

任何人都可以建议为什么&被回收

因为&yint&都是以某种方式“关于地址”:一个创建指针,它是内存地址的精简抽象,另一个指示引用,就像一个永远不能为空的指针。

答案 1 :(得分:5)

首先,不要担心,你很快就会克服这种混乱。

可能有多种原因:

  • 从逻辑上讲,它们是以某种方式连接起来的。引用的行为类似于指针,它是对象的地址。

  • 没有很多免费符号。看着键盘的顶行,我只能看到......好吧,只有$@。我个人也不喜欢,但那可能只是因为我习惯了&

  • 您提供的反原因可视为亲原因 - 不在语言中添加其他符号。想一想 - C ++中提供的大多数符号也可以在C中使用。目的可能是从C语言迁移的人们获得平滑的学习曲线。由于&在逻辑上与参考概念相关,因此它是最多的适合的。