【问题标题】:What is the difference between -> and dot [closed]-> 和点有什么区别[关闭]
【发布时间】:2014-05-09 16:01:23
【问题描述】:

在 C 程序中,当我定义一个结构时。

在什么情况下我会使用“->”以及在什么情况下使用“.” ?

例如

typedef struct foo foo;

struct foo{

  double bar;
  double bar2;
}

foo barbar;

什么时候使用barbar.bar,什么时候使用barbar->bar

【问题讨论】:

  • 这是一个过于基础的 C 问题。请查阅您当地的 C 参考书。
  • -> 用于指针,. 用于实例。此外,正如丹尼尔指出的,基本的 C 指针问题。应该在任何好书或教程中找到。
  • a->b(*a).b完全一样,所以答案是:您可以在任何时候使用-> 来使用(*a).b。如果您不明白*a 的含义,那么您需要退一步了解storagepointers 之间的基本关系。 &storage 转换为 pointer*pointer 转换回 storage。在继续之前,请确保您深入了解这一点。

标签: c ansi-c


【解决方案1】:

-> 的左边应该是指针类型,而. 的普通变量/实例。

  • 如果您有struct foo myFoo,则应使用myFoo.(&myFoo)->
  • 如果您有struct foo *myFoo,则应使用myFoo->(*myFoo).

【讨论】:

    【解决方案2】:

    使用->作为指向结构的指针,因为它取消引用指针,使用.作为结构

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 2011-09-20
      • 2013-03-25
      • 2023-03-08
      • 2016-07-17
      • 2015-07-17
      • 2014-07-11
      • 2020-12-28
      • 2021-05-24
      相关资源
      最近更新 更多