struct A { int bar; }; struct B { struct A a; int foo; }; struct C { void *priv; }; void f(struct C *c) { struct A *a = c->priv; } void g(void) { struct B b; struct C c; c.priv = &b; f(&c); }