【问题标题】:Difference in calling structure variables [duplicate]调用结构变量的差异[重复]
【发布时间】:2016-12-02 13:39:12
【问题描述】:

在结构中调用变量时->. 之间有什么区别?我已经看到它们都用于各种场景,但无法确定它们之间的区别。

【问题讨论】:

标签: c


【解决方案1】:
  • -> 表示您有一个变量指向包含该结构的一块内存。要访问其成员,您必须取消引用指针,然后将偏移量添加到成员。 -> 会为您做到这一点。

  • . 表示你的变量结构体,你只需要给成员加上偏移量。

正如用户 Eliot B 指出的那样,如果您有一个指向结构的指针 s,则可以通过两种方式访问​​成员 elems->elem(*s).elem

使用(*s),您有一个“是”结构的表达式,现在您可以使用点运算符访问elem

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      区别在于结构的定义实例。 '->' 和 '.'运算符总是关于左操作数。

      如果左操作数是指针,则使用'->',否则使用'.'。

      例如。

      struct Foo bar1;
      struct Foo* bar2 = malloc(sizeof(struct Foo));
      bar1.variable = "text";
      bar2->variable = "text"; 
      

      【讨论】:

        【解决方案4】:

        x->y->指向成员运算符的指针)等价于(*x).y。由于运算符优先级,你不能写*x.y,因为它会被评估为*(x.y)

        前者更容易输入,也更清晰。当x 是指向包含成员y 的结构的指针时使用它。

        【讨论】:

          猜你喜欢
          • 2012-12-02
          • 1970-01-01
          • 2018-10-29
          • 2015-11-12
          • 1970-01-01
          • 2021-05-06
          • 1970-01-01
          • 2010-10-06
          相关资源
          最近更新 更多