为啥B和C不是6它们不也自+

struct st{ int n; struct st *next; }; static struct st a[3]={5,&a[1],6,&a[2],7,},*p=&a[0]; 若要使printf("%d\n",____)输出值为6,。
A p++->n相当于(&a[0]->n)
B p->n++相当于(&a[0]->n)
C (*p).n++相当于(a[0].n)
D ++p->n相当于++(p->n)
答案是d
为啥B和C不是6它们不也自+

B p->n++ 等价于b = p->n; b++,所以相当于(&a[0]->n)++,所以B是错误
C (*p).n++ ,*p = a[0],所以(*p).n++相当于(a[0].n)++,所以C是错误的