They are treated much like C structures. They are always passed as pointers to structures. Similarly, if one structure contains another - it contains pointer to it, not it directly, thus:
struct foo { int x; string s; } struct bar { foo f; int z; }
is translated to:
struct foo { int x; struct string *s; }; struct bar { struct foo *f; int z; };