typedef struct { int m1i1; int m1i2; char* m1p1; } mess_1; typedef struct { int m_type; long m_source; union { mess_1 m_m1; mess_2 m_m2; } m_u; } message; message msg; Access the m1i2 member of msg and assign the value 5: msg.m_u.m_m1.m1i1 = 5;
Here is a more complete example.