虽然熟悉C及其细微差别的人可能非常,但我对这两者并不熟悉,也无法判断是否存在重要使用->
或.
访问结构成员之间的区别。
如果我有struct my_struct
:
struct my_struct {
int x;
int y;
};
struct my_struct grid;
除了语法不同,我是否会通过struct my_struct grid
或x
访问grid.x
的{{1}}成员?如果有差异,我应该选择哪一个?
尝试搜索google / SO,但我没有找到任何提及哪一个是首选方法(如果有的话)。两者似乎都是正确的,但我不禁觉得其中一个(grid->x
)有一个更专业的用例。
答案 0 :(得分:5)
这取决于结构的声明方式。如果我们有一个实际的struct变量,请使用.
。如果我们有一个指向结构的指针,请使用->
:
struct my_struct *s = ...;
s->x = 5;
printf("%d\n", s->x);
struct my_struct s2 = ...;
s2.x = 4;
printf("%d\n", s2.x);
答案 1 :(得分:4)
x->foo
是:
的简写(*x).foo
正如其他人所观察到的那样,只有x是指向结构的指针才有意义。
答案 2 :(得分:0)
一个简单的规则,记住何时使用'。'何时使用' - >' (通常情况下)...
abc->def or abc.def
当'abc'被定义为指针时,请使用' - >':
struct XYZ
{
int def;
} *abc;
abc->def = 1;
当'abc'未定义为指针时,请使用'。':
struct XYZ
{
int def;
} abc;
abc.def = 1