Arrow is just the dot version while accessing elements of a struct/class that is a pointer instead of a reference.
struct foo
{
int x;
float y;
};
struct foo var;
struct foo* pvar;
pvar = malloc(sizeof(struct foo));
var.x = 5;
(&var)->y = 14.3;
pvar->y = 22.4;
(*pvar).x = 6;
Why parenthesis are in use?
. is standard member access operator that has a higher precedence than * pointer operator.
To make the compiler know that dereference acts on the struct, but not on the element, the parethesis have to be added properly.
Based on discussion.