UNIT IV
Topics to be Covered:
Storage class
Structure
Features of structures
Declaration and initialization of structures
Array of structures
Pointer to structure
Structure and functions
Typedef
bit fields
enumerated data types
Union
12/18/2023 BVL_Computer Centre, MIT Campus 1
Unions
• Unions are conceptually similar to structures in C.
• The syntax to declare/define a union is also similar to
that of a structure instead of struct keyword union
keyword need to be used.
• The only differences is in terms of storage.
• In structure each member has its own storage location,
whereas all members of union uses a single shared
memory location which is equal to the size of its largest
data member.
12/18/2023 BVL_Computer Centre, MIT Campus 2
Difference between structure and union
Output : Output :
12/18/2023 BVL_Computer Centre, MIT Campus 3
Unions – Cont’d
• Unions are commonly used when there is a need to
store different types of data in a specific memory
location.
• They are especially useful in scenarios where we need
to save memory or when different types of data need
to be accessed interchangeably.
• However, it’s important to note that only one
member of a union can be accessed at a time.
• The value of one member can overwrite the value of
another member, leading to unpredictable behavior if
the union is not used carefully.
12/18/2023 BVL_Computer Centre, MIT Campus 4
Output :
12/18/2023 BVL_Computer Centre, MIT Campus 5
Need for Union in C programming
• C unions are used to save memory.
• C unions allow data members which are mutually exclusive to share
the same memory.
• This is quite important when memory is valuable, such as in
embedded systems.
• Unions are mostly used in embedded programming where direct
access to the memory is needed.
12/18/2023 BVL_Computer Centre, MIT Campus 6
Output :
12/18/2023 BVL_Computer Centre, MIT Campus 7
Pointer to Union
• Pointer to union can be created just like other pointers to
primitive data types.
• Consider the below union declaration:
union number
{
int a;
int b;
};
• Here, a and b are the members of the union number.
12/18/2023 BVL_Computer Centre, MIT Campus 8
Pointer to Union – Cont’d
• Union variable declaration:
union number n;
• Here, n is the variable to number.
• Pointer to union declaration and initialization:
union number *ptr = &n;
• Here, ptr is the pointer to the union and it is assigning with the
address of the union variable n.
• Accessing union member using union to pointer:
• Syntax:
pointer_name->member;
Example:
// to access members a and b using ptr
ptr->a;
ptr->b;
12/18/2023 BVL_Computer Centre, MIT Campus 9
Output :
12/18/2023 BVL_Computer Centre, MIT Campus 10
Difference between Union and Structure
Union Structure
Each member has its own separate All members share the same memory
memory space. space.
The size of the structure is determined
The size of the union is determined by
by the sum of the sizes of its
the size of its largest member.
members.
Only one member can be accessed at Individual members can be accessed
a time. at a time using the dot operator.
Only the first member can be All members can be initialized
initialized explicitly. individually or collectively.
Example: Example:
union student struct student
{ {
int id; int id;
char name[12]; char name[12];
12/18/2023 BVL_Computer Centre, MIT Campus 11
}; };