A more sophisticated example: struct A { int a[1024]; }; struct B { int x; struct A y; }; union C { struct A x; struct B y; }; void g(struct A* a, struct A* b) { *a = *b; } union C u; main(void) { g(&u.x, &u.y.y); } Ciao, Duncan.