A union is a variable that may hold objects of different types and sizes.
They provide a way to hold different kinds of data in a single area of
storage
Example
/* this union can hold any one, and only one, of the types below */
union u_tag {
int ival;
float fval;
char *sval;
} u;
Physically the union is the size of the largest of it's internal types
Objects are retrieved from the union in a manner similar to structs but
the user must remember which type is currently stored in use in the
union