J. Doe Asked:2020-04-30 22:41:35 +0000 UTC2020-04-30 22:41:35 +0000 UTC 2020-04-30 22:41:35 +0000 UTC 如何解释“*&”运算符的组合? 772 我正在学习 C++。发现以下内容*&переменная_указатель: 我是否正确理解这意味着获取指针指向的单元格的地址?如果是这样,为什么我不能记录&(*переменная_указатель)? c++ 3 个回答 Voted Best Answer AnT stands with Russia 2020-04-30T22:50:25Z2020-04-30T22:50:25Z 您将问题标记为 C++。在 C++ 中,这种组合不能在详细上下文之外以任何方式具体解释。C++ 中的&and运算符是重载运算符,可以做任何事情。* 如果我们说的是内置的一元运算符&and *,那么一对相邻的内置运算符*&相互“湮灭”,也就是*&имя_переменной简单地等价于имя_переменной。 你在谈论什么样的“获取指针指向的单元格的地址” - 目前尚不清楚。 为什么你“不能录音&(*имя_переменной)”是你应该问的。如果变量имя_переменной不是指针,则不能这样做,因为内置运算符*仅适用于指针。 一对运算符&*也被“歼灭”,但为此,*&原始表达式本身必须在形式上正确(实际上,在 的情况下)。也就是说,例如,表达式&*5或*&5在 C++ 中是不正确的。 pepsicoca1 2020-04-30T22:49:49Z2020-04-30T22:49:49Z 表达式 *(&variable_name) 获取变量的地址并立即获取指针的值。这个动作没有意义,但在语法上是正确的。 &(*variable_name) 表达式在语法上无效。因为没有为变量定义操作 (*variable_name)。 可能的表达式 &(*pointer)。这也是一个无意义的动作,但在语法上是正确的。 Александр 2020-04-30T23:38:09Z2020-04-30T23:38:09Z 我能想到的唯一可能派上用场的场景是将参数传递给函数时: #include <iostream> void resize(int *&_val, int _newSize) { if(_val) { delete[] _val; } _val = new int[_newSize]; } int main(int argc, char *argv[]) { int *v = nullptr; resize(v, 10); std::cout << v << std::endl; return 0; } 我们传递一个空指针,函数必须更改该指针的值。那些。v函数调用后指针的值发生变化resize。
您将问题标记为 C++。在 C++ 中,这种组合不能在详细上下文之外以任何方式具体解释。C++ 中的
&
and运算符是重载运算符,可以做任何事情。*
如果我们说的是内置的一元运算符
&
and*
,那么一对相邻的内置运算符*&
相互“湮灭”,也就是*&имя_переменной
简单地等价于имя_переменной
。你在谈论什么样的“获取指针指向的单元格的地址” - 目前尚不清楚。
为什么你“不能录音
&(*имя_переменной)
”是你应该问的。如果变量имя_переменной
不是指针,则不能这样做,因为内置运算符*
仅适用于指针。一对运算符
&*
也被“歼灭”,但为此,*&
原始表达式本身必须在形式上正确(实际上,在 的情况下)。也就是说,例如,表达式&*5
或*&5
在 C++ 中是不正确的。表达式 *(&variable_name) 获取变量的地址并立即获取指针的值。这个动作没有意义,但在语法上是正确的。
&(*variable_name) 表达式在语法上无效。因为没有为变量定义操作 (*variable_name)。
可能的表达式 &(*pointer)。这也是一个无意义的动作,但在语法上是正确的。
我能想到的唯一可能派上用场的场景是将参数传递给函数时:
我们传递一个空指针,函数必须更改该指针的值。那些。
v
函数调用后指针的值发生变化resize
。