Too bad that operator precedence will have that interpreted in a way that is probably unlike what you wanted. That would access what a or b pointed to, if they were pointers, and otherwise give you illegal indirection. You would need

Code:
(*p).a;
(*p).b;
And so there's this whole arrow shorthand dealio.

Code:
p->a;
p->b
It really is just convenient shorthand.