What is a union

How to define a union?

We use the union keyword to define unions. Here's an example:
  1. union car
  2. {
  3. char name[50];
  4. int price;
  5. };
The above code defines a derived type union car.

Create union variables

When a union is defined, it creates a user-defined type. However, no memory is allocated. To allocate memory for a given union type and work with it, we need to create variables.
Here's how we create union variables.
  1. union car
  2. {
  3. char name[50];
  4. int price;
  5. };
  6. int main()
  7. {
  8. union car car1, car2, *car3;
  9. return 0;
  10. }
Another way of creating union variables is:
  1. union car
  2. {
  3. char name[50];
  4. int price;
  5. } car1, car2, *car3;
  6.  
In both cases, union variables car1car2, and a union pointer car3 of union car type are created.

Access members of a union

We use the . operator to access members of a union. To access pointer variables, we use also use the -> operator.
In the above example,
  • To access price for car1car1.price is used.
  • To access price using car3, either (*car3).price or car3->price can be used.

Difference between unions and structures

Let's take an example to demonstrate the difference between unions and structures:
  1. #include <stdio.h>
  2. union unionJob
  3. {
  4. //defining a union
  5. char name[32];
  6. float salary;
  7. int workerNo;
  8. } uJob;
  9. struct structJob
  10. {
  11. char name[32];
  12. float salary;
  13. int workerNo;
  14. } sJob;
  15. int main()
  16. {
  17. printf("size of union = %d bytes", sizeof(uJob));
  18. printf("\nsize of structure = %d bytes", sizeof(sJob));
  19. return 0;
  20. }
Output
size of union = 32
size of structure = 40

Post a Comment

3 Comments