Nikhil Paul will provide lecture notes on a particular type of exam question up to this point... Continuing: struct Point_S { double x; double y; }; int main(int argc, char *argv[]) { Point_S p; Point_S *q; Point_S *r; q = new Point_S; q->x = 3.0; q->y = 2.0 p.x = 1.0; p.y = 2.5; r = &p; ... } Recall that a->b is a shorthand notation for (*a).b implicitly, the left operand must be a pointer, and you are dereferencing it expr type p Point_S &p Point_S * *p error p.x double p->x error p.y double (*p).y error q->y double &((*q).y) double * q.x error q->x double q.y error (*q).y double q->y double expr stack/heap/error ========================== p stack *p error p.x stack *q heap q->y heap q.x error (*q).x heap type stack/heap/error argc int stack *argc error error &argc int * [N/A] argv char ** stack *argv char * [I won't ask: static area? stack?] &argv char *** [I won't ask] argv[0] char * [I won't ask] argv[0][2] char [I won't ask]