Unions in C

A union is a type that enables you to store different data types in the same memory space (but not simultaneously). A typical use is a table designed to hold a mixture of types in some order that is neither regular nor known in advance. By using an array of unions, you can create an array of equal-sized units, each of which can hold a variety of data types.
 
Unions are set up in much the same way as structures. There is a union template and a union variable. They can be defined in one step or, by using a union tag, in two. Here is an example of a union template with a tag:

union hold {
    int digit;
    double bigfl;
    char letter;
};

A structure with a similar declaration would be able to hold an int value and a double value and a char value. This union, however, can hold an int value or a double value or a char value.

Example

#include <stdio.h>

int main() {
	union book {
		char name[25];
		char author[25];
		int callno;
	};
	union book b1 = { "The C book", "ABC", 2101 };

	printf("\n%s %s %d", b1.name, b1.author, b1.callno);

	getchar();
	return 0;
}