In learning C, I’ve just begun studying pointers to structures and have some questions.
Suppose I were to create a structure named myStructure, and then create a pointer myStructurePointer, pointing to myStructure. Is *myStructurePointer, and myStructure two ways of referencing the same thing? If so, why is it necessary to have the -> operator? It seems simpler to use *myStructurePointer.variable_name than myStructurePointer->variable_name.
You’re right,
is exactly the same as
What you have, however, is :
Which really tries to use the
.operator on the pointer variable, then dereference the result of that – it won’t even compile. You need the parentheses as I have them in the first example above if you want the expressions to be equivalent. The arrow saves at least a couple of keystrokes in this simple case.The use of
->might make more sense if you think about the case where the structure field has pointer type, maybe to another structure:vs.