Union in C
Union in C Language
A union is kind of just like the buildings in C. It additionally retailer totally different knowledge varieties in the identical reminiscence location. It is usually a person outlined knowledge kind identical like construction.
union and construction are virtually identical
Construction | Union | ||||
---|---|---|---|---|---|
|
|
Defining a union
Union may be outlined in identical method as buildings, for outlining union use union key phrase the place as for outlining construction use struct key phrase.
Syntax
1 |
<span class="kwd">union</span><span class="pln"> tagname</span><span class="pun">{</span><span class="pln">datatype member1</span><span class="pun">;</span><span class="pln">datatype member2</span><span class="pun">;</span><span class="pun">.......</span><span class="pun">.......</span><span class="pun">};</span> |
Instance of Union
1 |
<span class="kwd">union</span><span class="pln"> emp</span><span class="pun">{</span><span class="kwd">int</span><span class="pln"> ID</span><span class="pun">;</span><span class="kwd">char</span><span class="pln"> title</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="kwd">double</span><span class="pln"> wage</span><span class="pun">;</span><span class="pun">}</span><span class="pln">u</span><span class="pun">;</span> |
Accessing members of an union
The member of unions may be accessed in related method as Construction with union reference. Suppose, we you need to entry title variable in above instance, it may be accessed as u.title.
Benefit of union over construction
It occupies much less reminiscence as a result of it occupies the reminiscence of largest member solely.
Drawback of union over construction
It will possibly retailer knowledge in a single member solely.
Distinction between Construction and Union
Construction | Union | |
---|---|---|
1 | For outlining construction use struct key phrase. | For outlining union we use union key phrase |
2 | Construction occupies extra reminiscence area than union. | Union occupies much less reminiscence area than Construction. |
3 | In Construction we will entry all members of construction at a time. | In union we will entry just one member of union at a time. |
4 | Construction allocates separate cupboard space for its each members. | Union allocates one widespread cupboard space for its all members. Union discover which member want extra reminiscence than different member, then it allocate that a lot area |
Reminiscence Allocation in Construction and Union
Construction allocates separate cupboard space for its each members. Union allocates one widespread cupboard space for its all members. Union discover which member want extra reminiscence than different member, then it allocate that a lot area
In case of Construction
Syntax
1 |
<span class="kwd">struct</span><span class="pln"> emp</span><span class="pun">{</span><span class="kwd">int</span><span class="pln"> ID</span><span class="pun">;</span><span class="kwd">char</span><span class="pln"> title</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="kwd">double</span><span class="pln"> wage</span><span class="pun">;</span><span class="pun">};</span> |
Instance
1 |
For above construction, reminiscence allocation like beneath.int ID -- 2Bchar title[10] -- 10Bdouble wage -- 8B Whole reminiscence allocation = 2+6+8 = 16 Bytes |
In case of Union
Syntax
1 |
<span class="kwd">union</span><span class="pln"> emp</span><span class="pun">{</span><span class="kwd">int</span><span class="pln"> ID</span><span class="pun">;</span><span class="kwd">char</span><span class="pln"> title</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="kwd">double</span><span class="pln"> wage</span><span class="pun">;</span><span class="pun">};</span> |
For above union, solely 8 bytes of reminiscence shall be allotted as a result of double knowledge kind will occupy most area of reminiscence over different knowledge varieties.
Whole reminiscence allocation = 8 Bytes
When use Construction and Union
When want to control the info for all member variables then use construction. When want to control just one member then use union.
Word:
- All of the properties of the construction are identical for union, besides initialization course of.
- In case of construction initialize all knowledge members at a time as a result of reminiscence location are totally different however in case of union just one member must be initialize.
- In case of union if we initializing a number of member then compiler will provides an error.
Instance of Union in C
1 2 |
<span class="com">#embrace</span><span class="str"><stdio.h></stdio.h></span><span class="com">#embrace</span><span class="str"><conio.h></conio.h></span><span class="kwd">union</span><span class="pln"> emp</span><span class="pun">{</span><span class="kwd">int</span><span class="pln"> ID</span><span class="pun">;</span><span class="kwd">char</span><span class="pln"> title</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="kwd">double</span><span class="pln"> wage</span><span class="pun">;</span><span class="pun">}</span><span class="pln">u</span><span class="pun">;</span> <span class="com">// reference of union</span><span class="kwd">void</span><span class="pln"> foremost</span><span class="pun">()</span><span class="pun">{</span><span class="pln">clrscr</span><span class="pun">();</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Enter emp Id: "</span><span class="pun">);</span><span class="pln">scanf</span><span class="pun">(</span><span class="str">"%d"</span><span class="pun">,&</span><span class="pln">u</span><span class="pun">.</span><span class="pln">ID</span><span class="pun">);</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Enter emp Identify: "</span><span class="pun">);</span><span class="pln">scanf</span><span class="pun">(</span><span class="str">"%s"</span><span class="pun">,&</span><span class="pln">u</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Enter emp Wage: "</span><span class="pun">);</span><span class="pln">scanf</span><span class="pun">(</span><span class="str">"%f"</span><span class="pun">,&</span><span class="pln">u</span><span class="pun">.</span><span class="pln">wage</span><span class="pun">);</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Emp ID: %d"</span><span class="pun">,</span><span class="pln">u</span><span class="pun">.</span><span class="pln">ID</span><span class="pun">);</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Emp Identify: %s"</span><span class="pun">,</span><span class="pln">u</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Emp Wage: %f"</span><span class="pun">,</span><span class="pln">u</span><span class="pun">.</span><span class="pln">wage</span><span class="pun">);</span><span class="pln">getch</span><span class="pun">();</span><span class="pun">}</span> |
Output
1 |
Output:Emp ID: 100Emp Identify: PorterEmp Wage: 20000 |