Course Content
Programming in C
About Lesson

A union is a variable that may hold objects of different types and sizes at different times, with the compiler keeping track of size and alignment requirements. They provide a way to manipulate different kinds of data in a single area of storage. For example:

union u_tag {
  int ival;
  float fval;
  char *sval;
} u;

Here, the variable u will be large enough to hold the largest of the three type. Any one of these types may be assigned to u and then used in expressions. It is the programmer’s responsibility to keep track of which type is currently stored in a union.

Members of a union are accessed just like structure members using “.” and “->” operators. If we have a variable utype which keeps track of the current type stored in u, then we could print its value using the following code.

if (utype == INT)
  printf("%d\n", u.ival);
else if (utype == FLOAT)
  printf("%f\n", u.fval);
else if (utype == STRING)
  printf("%s\n", u.sval);
else
  printf("Invalid type");
Scroll to Top