【问题标题】:Explanation of arrow and dot operator pertaining to different situations in C++C++中与不同情况有关的箭头和点运算符的解释
【发布时间】:2023-03-31 07:34:01
【问题描述】:

我理解箭头运算符的意思是取消引用指向结构/对象的指针并获取成员,例如:

int test;
test = one->two;

one 是对象/结构指针,two 是成员,在这种情况下是整数。基本相同:

int test;
test = (*one).two;

但是,如果 two 是一个指向 int 的指针呢?您将如何检索存储在two 指向的地址处的整数值?

【问题讨论】:

  • *( (*one).two )(同样的方式...)
  • 为什么投反对票?我可以看到这将是多么令人困惑且难以找到答案。对于新程序员来说,如何从其他表达式构造表达式以及如何在整个过程中应用运算符并不是很明显。
  • 谢谢 Joseph 我想了解有关该主题的更多信息。有什么建议吗?
  • @seanr 我唯一的建议是查看表达式在 C++(和许多其他语言)中的工作方式。您可能看到*p 并理解这意味着取消引用指针p,但是当您在更复杂的表达式中看到* 时,就变得更难理解了。总的来说,您看到的是*<some expression>。在简单的情况下,<some expression> 只是一个指针变量的名称(如p)。但是,<some expression> 可以是任何表达式,只要它具有指针类型即可。如果one->two 是一个指针,那么你可以用同样的方式取消引用它。

标签: c++ pointers object dereference


【解决方案1】:
*((*one).two)

or

*(one->two)

【讨论】:

  • 外括号不是必须的。
  • 同意,但他们阐明了正在做什么,并且使用它们使我不必记住 OOO。
猜你喜欢
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 2013-07-16
  • 2019-02-16
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
相关资源
最近更新 更多