Чтобы добавить к предыдущим ответам то, что точка (.
) предназначена для «нормальных» переменных, а стрелка (->
) - для указателей, обратите внимание, что стрелка является синтаксическим эквивалентом разыменования указателя, за которым следуетточка, предоставленная для удобства (поскольку это такая распространенная операция).
Hstring* s;
s->length; // this is equivalent to...
(*s).length; // ...this
Скобки необходимы, поскольку точка имеет более высокий приоритет, чем звезда. Без них вы бы а) использовали точку с указателем и б) пытались отменить ссылку на поле целой длины, оба из которых были бы недействительными.
Hstring* s;
*s.length; // this is equivalent to...
*(s.length); // ...this (not what you want at all)