c++ - 清楚地说明 * 和 & 作为类型的一部分和作为取消引用/address_of 运算符之间的区别

标签 c++ c

刚接触 C/C++ 的人没有意识到的一件事是 *& 并不总是运算符的解引用和地址。我不必在 SO 答案中澄清这一点,但我发现很难以正确和清晰的方式表达它。

A)

int *p = ...
int &r = ...

B) 运算符的解引用/地址。


  1. 两者的上下文区别是什么?

    一个。是...在类型声明中吗?

    B.是...任何其他表达式...

  2. A中的符号叫什么?

迂腐的、标准的措辞当然会受到赞赏,但这里的目的是向初学者解释这一点。

澄清:这是关于指针/引用上下文,所以我只是忽略明显的算术、按位运算符。

最佳答案

*& 出现在类型定义中时,它们分别创建了一个 pointerreference 类型. (例如,int*“int pointer”或“pointer-to-int”,int&“int reference”或“reference-to-int”)。

作为表达式的一部分,*& 是上下文相关的,表达式决定了它们的解释。

* 运算符:

  • 间接(即取消引用指针),参见下面的“成员访问运算符”
  • 乘法,见下文“算术运算符”

& 运算符:

另见:

关于c++ - 清楚地说明 * 和 & 作为类型的一部分和作为取消引用/address_of 运算符之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486504/

相关文章:

c++ - 对V4L2的一个误解

c++ - Native C++ 中的 Toast 通知监听器

C++ 的性能比 C 更好?

c++ - 带有map()/mapto()函数的C/C++库?

c - 数组位置自动变为1

c - _start 是否调用我的程序的主函数和其他基本设置函数?

c++ - 实例化类的正确方法

c++ - Sql Like在c++中的类似用法

c++ - 如何将 QVariant 转换为自定义类?

c - 用 C 生成所有元组 - 比嵌套循环更好的方法?