Skip to main content

Unions

What is a Union in C++?

A union in C++ is a special data structure that allows you to store different types of data in the same memory location. You can define a union with many members, but only one member can contain a value at any given time. This makes union a useful tool for saving memory, and its usage can lead to more efficient programs.

Let's start with an example of a union:

union myUnion {
int integer;
double decimal;
};

In the above example, myUnion is a union type that can hold an int or a double value. It can't hold both at the same time.

Declaring and Accessing Union Variables

To declare a union variable, use the union keyword followed by the union type, and then the variable name. Let's declare a variable number of type myUnion:

myUnion number;

We can now access the members of the union and assign values to them:

number.integer = 10;

If you try to access the value of number.decimal right now, it will not hold any meaningful value since we have assigned to number.integer.

Size of Unions

Unions are designed to save memory by allowing you to use the same memory location for storing different data types. To accomplish this, a union will take up as much space as its largest member. For instance, if a union contains an int and a double, it will take up the size of a double, since a double requires more memory than an int.

You can check the size of a union using the sizeof operator:

cout << "Size of myUnion is: " << sizeof(myUnion);

Using Unions

Unions are used in various applications. One common use is in low-level programming, where precise control over memory is necessary.

Let's take a look at a practical example:

union Data {
int i;
float f;
char str[20];
} data;

int main() {
data.i = 10;
cout << "data.i : " << data.i << endl;

data.f = 220.5;
cout << "data.f : " << data.f << endl;

strcpy(data.str, "C++ Programming");
cout << "data.str : " << data.str << endl;

return 0;
}

In the above code, the union Data can store an integer, a float, or a string. Note that only the last value that was stored in the union can be used – if you try to use an earlier value, you will get an incorrect result.

Conclusion

Unions in C++ provide a powerful tool for managing memory usage in your programs. By understanding how to use unions, you can create more efficient and effective C++ code. Remember that a union can only hold a value for one of its members at a time, and that it will take up as much space as its largest member. With this knowledge in hand, you'll be able to use unions to their full potential in your C++ programs.