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