8

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

int y;
int* p_to_y = &y;

该字符在 C++ 中作为引用声明符有共同用途。.

int y;
int& y_alias = y;

在粗略了解C后学习C++时,这种双重用法让我很困惑!我知道使用该符号的上下文有很大的不同,但鉴于引用和指针是不应混淆的重要概念,任何人都可以提出为什么&被回收而不是使用新的替代符号?

4

2 回答 2

6

谁能建议为什么&被回收

因为&yint&两者在某种程度上都是“关于地址”的:一个创建一个指针,它是内存地址的薄抽象,另一个表示一个引用,就像一个永远不会为空的指针。

于 2012-05-30T12:08:44.213 回答
6

首先,别担心,你很快就会克服这种困惑。

可能有多种原因:

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

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

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

于 2012-05-30T12:16:27.230 回答