Unions in C Language
Unions in C Language
Unions are conceptually similar to structures.
The syntax of union is also similar to that of structure. 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.
This implies that
although a union may contain many members of different types, it
cannot handle all the members at same time. A union is declared
using union keyword.
union item
{
int m;
float x;
char c;
}It1;
This declares a
variable It1 of type union item. This union contains three
members each with a different data type. However only one of them can be used
at a time. This is due to the fact that only one location is allocated for a union
variable, irrespective of its size. The compiler allocates the storage that is
large enough to hold largest variable type in the union. In the union
declared above the member x requires 4 bytes which is largest among the
members in 16-bit machine. Other members of union will share the same
address.
Accessing a Union Member
Syntax for
accessing union member is similar to accessing structure member,
union test
{
int a;
float b;
char c;
}t;
t.a ; //to access members of union t
t.b ;
t.c ;
Complete Example for Union
#include <stdio.h>
#include <conio.h>
union item
{
int a;
float b;
char ch;
};
int main( )
{
union item it;
it.a = 12;
it.b = 20.2;
it.ch='z';
clrscr();
printf("%d\n",it.a);
printf("%f\n",it.b);
printf("%c\n",it.ch);
getch();
return 0;
}
Output :
-26426
20.1999
z
As
you can see here, the values of a and b get corrupted and only
variable c prints the expected result. Because in union, the only
member whose value is currently stored will have the memory.
Comments
Post a Comment