Unlock the Power of C Unions
When it comes to programming in C, understanding unions is crucial for efficient memory management and data storage. So, what exactly are unions?
A Union: A Space-Saving Alternative to Structs
Unlike structs, which allocate enough space to store all their members, unions can only hold one member value at a time. This key difference makes unions a valuable tool for saving memory.
Defining a Union: A Simple yet Powerful Concept
To define a union, we use the union
keyword. Here’s an example:
union car {
int wheels;
char color[10];
float price;
};
This code defines a derived type union car
.
Creating Union Variables: Bringing Unions to Life
When a union is defined, it creates a user-defined type, but no memory is allocated. To work with unions, we need to create variables. Here’s how:
union car car1, car2;
union car *car3;
Alternatively, we can create union variables like this:
union car car1 = {10};
union car *car3 = &car1;
Accessing Union Members: A Matter of Operators
To access members of a union, we use the .
operator. For pointer variables, we use the ->
operator. For example:
car1.price // access price for car1
(*car3).price or car3->price // access price using car3
Unions vs Structures: A Sizeable Difference
Let’s explore the difference between unions and structures with an example:
“`
union uJob {
char name[32];
int salary;
int workerNo;
};
struct sJob {
char name[32];
int salary;
int workerNo;
};
“`
The output reveals a significant difference in the size of union and structure variables. Why is that?
The Size of a Union: A Story of Shared Memory
The size of a union variable is always the size of its largest element. In this case, the size of uJob
is 32 bytes, matching the size of its largest element, name[32]
. With unions, all members share the same memory.
Real-World Applications of Unions
Unions are used in various scenarios where memory efficiency is crucial. To learn more about their practical applications, visit Why do we need C Unions?