Chapter 25 of 37

Unions

In the previous topic, we learned about structures, which allow us to store different types of data together.

A union also allows us to group different data types, but there is one important difference: all members of a union share the same memory location.

What is a Union?

A union is a user-defined data type in C where all members share the same memory location.

It is defined using the union keyword:

union Data
{
    int number;
    float price;
    char grade;
};

We can create a union variable:

union Data data;

How Does a Union Work?

Consider:

union Data
{
    int number;
    float price;
};

If we store a value in number:

data.number = 10;

we can access number.

But if we then store:

data.price = 20.5;

the same memory is used for price, so the previously stored number value is no longer reliably available.

Think of it like a single box that can hold different types of things, but only one is meant to be stored at a time.


Example

#include <stdio.h>

union Data
{
    int number;
    float price;
};

int main()
{
    union Data data;

    data.number = 10;
    printf("Number: %d\n", data.number);

    data.price = 20.5;
    printf("Price: %.1f\n", data.price);

    return 0;
}

Output:

Number: 10
Price: 20.5

The important point is that number and price use the same memory area.


Union vs Structure

This is the most important difference to remember.

Structure

Union

Each member has separate storage

Members share storage

Multiple members can hold valid values at the same time

Only the most recently stored member should be read

Usually requires enough memory for all members

Size is based on its largest member, subject to alignment

struct keyword

union keyword

For example:

struct Data
{
    int number;
    float price;
};

Both number and price have their own storage.

But:

union Data
{
    int number;
    float price;
};

They share the same storage.

Why Use Unions?

Unions are useful when:

  • Only one member needs to be used at a time.

  • Memory efficiency is important.

  • Working with low-level or embedded systems.

  • Representing data that can have different possible types.

In Simple Words

A structure stores all its members separately, while a union makes all its members share the same memory location.

The easiest way to remember:

Structure → Separate memory

Union → Shared memory