结构中的点运算符

时间:2014-05-09 17:38:25

标签: c struct

我试图了解使用结构和typedef访问某些组件时的区别

在处理结构时使用点运算符有什么区别 使用下面的例子

到目前为止,我已尝试过此代码

typedef struct _game{
   int something;
   char something_else;
} g;

如果我使用

g.something or g->something 

有什么区别?

我已经使用了他们两个并且他们都返回结果但我仍然不理解差异

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

我假设这是C.当问语言问题标记语言时。有许多语言看起来相同,可以给你微妙的不同答案。 C ++是一种与C,btw不同的语言。

在本声明中,

typedef struct _game { int something; } g;

g类型,而不是变量。因此,g.something毫无意义。 typedef表示"键入define"。相反,你会有

g my_g_instance;
g *my_g_ptr = &my_g_instance;

my_g_instance.something = 2;
my_g_ptr->something = 5;

.->之间的区别在于运算符左侧的变量是否为指针。