C ->;之间的区别是什么;和点

C ->;之间的区别是什么;和点,c,ansi-c,C,Ansi C,在C程序中,当我定义结构时 在哪种情况下我会使用“->”以及在哪种情况下“ 比如说 typedef struct foo foo; struct foo{ double bar; double bar2; } foo barbar; 何时使用barbar.bar,何时使用barbar->bar 使用->作为指向结构的指针,因为它取消了对指针的引用,使用作为指向结构的指针,->左侧的应该是指针类型,而的普通变量/实例应该是指针类型 如果您有一个struct-foo-myFoo,您

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

在哪种情况下我会使用“->”以及在哪种情况下“

比如说

typedef struct foo foo;

struct foo{

  double bar;
  double bar2;
}

foo barbar;

何时使用
barbar.bar
,何时使用
barbar->bar

使用
->
作为指向结构的指针,因为它取消了对指针的引用,使用
作为指向结构的指针,
->
左侧的应该是指针类型,而
的普通变量/实例应该是指针类型

  • 如果您有一个
    struct-foo-myFoo
    ,您应该使用
    myFoo.
    (&myFoo)->
  • 如果您有一个
    struct foo*myFoo
    ,您应该使用
    myFoo->
    (*myFoo)。

这是一个太基本的C问题。请查阅当地的C参考书。
->
有关指针,
有关实例。另外,正如Daniel指出的,基本的C指针问题。应该在任何一本好书或教程中都可以找到。
a->b
的可能副本与
(*a).b
完全相同,因此答案是:您可以在任何时候使用
(*a).b
。如果您不理解
*a
的含义,则需要返回一步,了解存储和指针之间的基本关系<代码>&将存储转换为指针,
*
将指针转换回存储。在继续之前,请确保您深入理解了这一点。