What is a union?

Long Answer
Views 568

Answer:

  • The union is a user-defined data type that allows storing multiple types of data in a single unit. However, it doesn't occupy the sum of the memory of all members. It holds the memory of the largest member only.
  • In union, we can access only one variable at a time as it allocates one common space for all the members of a union.

Syntax of union

<span class="pln">
</span><span class="kwd">union</span><span class="pln"> union_name  
</span><span class="pun">{</span><span class="pln">  
</span><span class="typ">Member_variable1</span><span class="pun">;</span><span class="pln">  
</span><span class="typ">Member_variable2</span><span class="pun">;</span><span class="pln">  
</span><span class="pun">.</span><span class="pln">  
</span><span class="pun">.</span><span class="pln">  
</span><span class="typ">Member_variable</span><span class="pln"> n</span><span class="pun">;</span><span class="pln">  
</span><span class="pun">}[</span><span class="kwd">union</span><span class="pln"> variables</span><span class="pun">];</span><span class="pln">  
</span>
Let's see a simple example
<span class="pln">
</span><span class="com">#include</span><span class="str">&lt;stdio.h&gt;</span><span class="pln">  
</span><span class="kwd">union</span><span class="pln"> data  
</span><span class="pun">{</span><span class="pln">  
    </span><span class="kwd">int</span><span class="pln"> a</span><span class="pun">;</span><span class="pln">      </span><span class="com">//union members declaration.  </span><span class="pln">
    </span><span class="kwd">float</span><span class="pln"> b</span><span class="pun">;</span><span class="pln">  
    </span><span class="kwd">char</span><span class="pln"> ch</span><span class="pun">;</span><span class="pln">  
</span><span class="pun">};</span><span class="pln">  
</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln">  
</span><span class="pun">{</span><span class="pln">  
  </span><span class="kwd">union</span><span class="pln"> data d</span><span class="pun">;</span><span class="pln">       </span><span class="com">//union variable.  </span><span class="pln">
  d</span><span class="pun">.</span><span class="pln">a</span><span class="pun">=</span><span class="lit">3</span><span class="pun">;</span><span class="pln">  
  d</span><span class="pun">.</span><span class="pln">b</span><span class="pun">=</span><span class="lit">5.6</span><span class="pun">;</span><span class="pln">  
  d</span><span class="pun">.</span><span class="pln">ch</span><span class="pun">=</span><span class="str">'a'</span><span class="pun">;</span><span class="pln">  
  printf</span><span class="pun">(</span><span class="str">"value of a is %d"</span><span class="pun">,</span><span class="pln">d</span><span class="pun">.</span><span class="pln">a</span><span class="pun">);</span><span class="pln">  
  printf</span><span class="pun">(</span><span class="str">"\n"</span><span class="pun">);</span><span class="pln">  
  printf</span><span class="pun">(</span><span class="str">"value of b is %f"</span><span class="pun">,</span><span class="pln">d</span><span class="pun">.</span><span class="pln">b</span><span class="pun">);</span><span class="pln">  
  printf</span><span class="pun">(</span><span class="str">"\n"</span><span class="pun">);</span><span class="pln">  
  printf</span><span class="pun">(</span><span class="str">"value of ch is %c"</span><span class="pun">,</span><span class="pln">d</span><span class="pun">.</span><span class="pln">ch</span><span class="pun">);</span><span class="pln">  
  </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">  
</span><span class="pun">}</span><span class="pln">  
</span>
Output:
value of a is 1085485921
value of b is 5.600022
value of ch is a

In the above example, the value of a and b gets corrupted, and only variable ch shows the actual output. This is because all the members of a union share the common memory space. Hence, the variable ch whose value is currently updated.

Related Articles:

This section is dedicated exclusively to Questions & Answers. For an in-depth exploration of C Programming Language, click the links and dive deeper into this subject.

Join Our telegram group to ask Questions

Click below button to join our groups.