Difference between Structure and Union

What is Structure?

Structure is a user-defined data type in C programming language that combines logically related data items of different data types together.

All the structure elements are stored at contiguous memory locations. Structure type variable can store more than one data item of varying data types under one name.

In this tutorial, you will learn:

What is Union

Union is a user-defined data type, just like a structure. Union combines objects of different types and sizes together. The union variable allocates the memory space equal to the space to hold the largest variable of union. It allows varying types of objects to share the same location.

Syntax of Declaring Structure

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

Structure is declared using the "struct" keyword and name of structure. Number 1, number 2, number 3 are individual members of structure. The body part is terminated with a semicolon (;).

Example of Structure in C Programming

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

In the above program, a structure called student is created. This structure has three data members: 1) name (string), 2) roll_no (integer), and 3) marks (float).

After this, a structure variable sdt is created to store student information and display it on the computer screen.

Output:

Enter the following information:

Enter student name: James

Enter student roll number: 21

Enter student marks: 67

The information you have entered is:

Student name: John

Student roll number: 21

Student marks: 67.0

Syntax of Declaring Union

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

Union is declared using the "union" keyword and name of union. Number 1, number 2, number 3 are individual members of union. The body part is terminated with a semicolon (;).

Example of Union in C Programming

#include <stdio.h>

union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

Output:

1101109601

20.199892

a

In the above program, you can see that the values of x and y gets corrupted. Only variable ch prints the expected result. It is because, in union, the memory location is shared among all member data types.

Therefore, the only data member whose value is currently stored, will occupy memory space. The value of the variable ch was stored at last, so the value of the rest of the variables is lost.

Structure Vs. Union

Here is the important difference between structure and union:

Structure Union
You can use a struct keyword to define a structure. You can use a union keyword to define a union.
Every member within structure is assigned a unique memory location. In union, a memory location is shared by all the data members.
Changing the value of one data member will not affect other data members in structure. Changing the value of one data member will change the value of other data members in union.
It enables you to initialize several members at once. It enables you to initialize only the first member of union.
The total size of the structure is the sum of the size of every data member. The total size of the union is the size of the largest data member.
It is mainly used for storing various data types. It is mainly used for storing one of the many data types that are available.
It occupies space for each and every member written in inner parameters. It occupies space for a member having the highest size written in inner parameters.
You can retrieve any member at a time. You can access one member at a time in the union.
It supports flexible array. It does not support a flexible array.

Advantages of structure

Here are pros/benefits for using structure:

Advantages of union

Here, are pros/benefits for using union:

Disadvantages of structure

Here are cons/drawbacks for using structure:

Disadvantages of union

Here, are cons/drawbacks for using union:

KEY DIFFERENCES:

  • Every member within structure is assigned a unique memory location while in union a memory location is shared by all the data members.
  • Changing the value of one data member will not affect other data members in structure whereas changing the value of one data member will change the value of other data members in union.
  • Structure is mainly used for storing various data types while union is mainly used for storing one of the many data types.
  • In structure, you can retrieve any member at a time on the other hand in union, you can access one member at a time.
  • Structure supports flexible array while union does not support a flexible array.

 

YOU MIGHT LIKE: