(void)p->a->b->c;
(void)(*(*(*p).a).b).c;
いちいち先頭に戻って挿入するなんて考えられない

(void)p[0].a[0].b[0].c;
これもなんか嫌だよ