C Programs | IT Developer
IT Developer

C Programs



Share with a Friend

Structures in C

Structure vs Union (Memory Allocation & Data Sharing)

C Program: Structure vs Union (Memory Allocation & Data Sharing)

C

#include <stdio.h>

#include <string.h>

 

// Define structure

struct StudentStruct {

    int id;

    float marks;

    char name[20];

};

 

// Define union

union StudentUnion {

    int id;

    float marks;

    char name[20];

};

 

int main() {

    struct StudentStruct s1;

    union StudentUnion u1;

 

    printf("Size of Structure: %lu bytes\n", sizeof(s1));

    printf("Size of Union    : %lu bytes\n\n", sizeof(u1));

 

    // Assigning values to structure members

    printf("=== Structure Example ===\n");

    s1.id = 101;

    s1.marks = 89.5;

    strcpy(s1.name, "Riya");

 

    printf("Structure data:\n");

    printf("ID    : %d\n", s1.id);

    printf("Marks : %.2f\n", s1.marks);

    printf("Name  : %s\n\n", s1.name);

 

    // Assigning values to union members

    printf("=== Union Example ===\n");

    u1.id = 101;

    printf("After assigning ID:\n");

    printf("ID    : %d\n", u1.id);

 

    u1.marks = 89.5;

    printf("\nAfter assigning Marks:\n");

    printf("Marks : %.2f\n", u1.marks);

    printf("ID    : %d (overwritten)\n", u1.id);

 

    strcpy(u1.name, "Riya");

    printf("\nAfter assigning Name:\n");

    printf("Name  : %s\n", u1.name);

    printf("ID    : %d (corrupted)\n", u1.id);

    printf("Marks : %.2f (corrupted)\n", u1.marks);

 

    return 0;

}

Output

 
OUTPUT :
Size of Structure: 28 bytes
Size of Union    : 20 bytes

=== Structure Example ===
Structure data:
ID    : 101
Marks : 89.50
Name  : Riya

=== Union Example ===
After assigning ID:
ID    : 101

After assigning Marks:
Marks : 89.50
ID    : 1112014848 (overwritten)

After assigning Name:
Name  : Riya
ID    : 1633906546 (corrupted)
Marks : 118.003494 (corrupted)

Explanation

Feature

Structure (struct)

Union (union)

Memory Allocation

Separate memory for each member

Shared memory for all members

Size Calculation

Sum of sizes of all members

Size of the largest member

Value Retention

All members can store values simultaneously

Only one member retains value at a time

Use Case

When you need multiple independent data fields

When you need memory-efficient data sharing between fields