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

lea*_*vst 6 c++ standards pointers reference ampersand

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

int y;
int* p_to_y = &y;
Run Code Online (Sandbox Code Playgroud)

该角色在C++中作为参考声明符共享..

int y;
int& y_alias = y;
Run Code Online (Sandbox Code Playgroud)

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

Rae*_*ald 5

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

因为&y并且int&两者都以某种方式"关于地址":一个创建一个指针,它是一个内存地址的精简抽象,另一个指示一个引用,就像一个永远不能为空的指针.

  • 我想知道为什么这个被低估了,除了"只有那么多符号可用"这个答案对我来说似乎非常好.虽然当然引用_are not_指针,但它们仍然共享大多数属性(并且大部分时间是由编译器在内部实现为指针). (2认同)

Luc*_*ore 5

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

可能有多种原因:

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

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

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