Оператор .
на самом деле является оператором для доступа к элементу структуры.
struct Foo
{
int bar;
int baz;
} aFoo;
aFoo.bar = 3;
Если у вас есть указатель на структуру, (очень часто) вы можете получить доступ к ее элементам, используя разыменование указателя и .
оператор.
struct Foo *p;
p = &aFoo;
(*p).baz = 4;
Скобки необходимы, потому что .
имеет более высокий приоритет, чем *
.Вышеупомянутое разыменование члена структуры, на которую указывает что-то, является чрезвычайно распространенным, поэтому ->
был введен как сокращение.
p->baz = 4; // identical to (*p).baz = 4
Если p - указатель, вы никогда не увидите p.anything
в простом CПо крайней мере, не во всем, что компилируется.Однако он используется для обозначения доступа к свойству в Objective-C, что было ошибкой IMO.