【发布时间】:2012-06-04 15:59:50
【问题描述】:
在 C++ 中,和号字符 (&) 可用于获取左值、函数指示符或限定名称的地址。 .
int y;
int* p_to_y = &y;
该字符在 C++ 中作为引用声明符有共同用途。 .
int y;
int& y_alias = y;
在粗略了解C后学习C++时,这种双重用法让我很困惑!我知道使用符号的上下文有很大的不同,但鉴于引用和指针是不应混淆的重要概念,任何人都可以提出为什么 & 被回收而不是使用新的替代符号?
【问题讨论】:
-
-1 & 投票结束,因为没有建设性,除非有人找到了 C++ 原始草案的日志,这只是在猜测或给出你自己的论点(这是有道理的),不是真正的原因(甚至可能是:“为什么,这对我来说很容易,而且我不会使用新符号!”。
-
在 C 中,
*可用于取消引用指针、声明指针和乘以值。为什么这没有让你感到困惑? -
C 和 C++ 中有太多事后看来是愚蠢的。我们可能会浪费几个月的时间来研究它。而在这一点上,它完全无关紧要。
-
@interjay - 因为指向和算术运算更容易区分
-
这里只是一个问题。这就像在问为什么默认函数返回类型是
int而不是void,或者为什么有这么多级别的运算符优先级,或者为什么允许嵌套赋值(a = b = c),这导致需要@987654329 @ 以及创建的所有错误,或者为什么同时具有++和--的前缀和后缀形式,或者以空字符结尾的字符串而不是长度字节,这会导致缓冲区溢出并禁止字符串包含任意二进制数据,或者……或者……
标签: c++ pointers reference standards ampersand