刚接触 C/C++ 的人没有意识到的一件事是 *
和 &
并不总是运算符的解引用和地址。我不必在 SO 答案中澄清这一点,但我发现很难以正确和清晰的方式表达它。
A)
int *p = ...
int &r = ...
B) 运算符的解引用/地址。
两者的上下文区别是什么?
一个。是...在类型声明中吗?
B.是...任何其他表达式...
A中的符号叫什么?
迂腐的、标准的措辞当然会受到赞赏,但这里的目的是向初学者解释这一点。
澄清:这是关于指针/引用上下文,所以我只是忽略明显的算术、按位运算符。
最佳答案
当 *
和 &
出现在类型定义中时,它们分别创建了一个 pointer
和 reference
类型. (例如,int*
“int pointer”或“pointer-to-int”,int&
“int reference”或“reference-to-int”)。
作为表达式的一部分,*
和 &
是上下文相关的,表达式决定了它们的解释。
*
运算符:
- 间接(即取消引用指针),参见下面的“成员访问运算符”
- 乘法,见下文“算术运算符”
&
运算符:
另见:
关于c++ - 清楚地说明 * 和 & 作为类型的一部分和作为取消引用/address_of 运算符之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486504/