Union in C Programming with Example समझना हर उस Student के लिए ज़रूरी है जो C language में Memory Management को गहराई से जानना चाहता है। अगर आप चाहते हैं कि आपका Program कम Memory में ज़्यादा काम करे, तो Union ही वह Tool है जो आपकी मदद करेगा। यह Topic Interviews और Exams दोनों में बहुत पूछा जाता है, इसलिए इसे ध्यान से पढ़ना बहुत ज़रूरी है।
इस Post में हम Step-by-Step समझेंगे कि Union क्या होता है, इसे कैसे Declare और Use करते हैं, यह Structure से कैसे अलग है, और इसके Real-World Uses क्या हैं। हर Concept को आसान हिंदी भाषा में, Code Examples के साथ समझाया गया है ताकि Beginners को भी कोई दिक्कत न हो।
चाहे आप C Programming नये-नये सीख रहे हों या Exam की तैयारी कर रहे हों — इस एक Post में आपको Union से जुड़ी हर ज़रूरी जानकारी मिलेगी। तो बिना देर किए, चलिए शुरू करते हैं!
Table of Contents
Union in C Programming क्या है? (What is Union)
Union in C एक User-Defined Data Type है, जो बिल्कुल struct (Structure) की तरह दिखता है। यह भी अलग-अलग Data Types को एक Group में रखता है — जैसे int, float, char आदि। लेकिन Union और Structure में एक बहुत बड़ा और महत्वपूर्ण अंतर है:
- Structure में हर Member को अपनी अलग-अलग Memory मिलती है।
- Union में सभी Members एक ही Common Memory Location को साझा (Share) करते हैं।
इसका सीधा मतलब यह है कि Union में एक समय पर सिर्फ एक ही Member में सही Value Store रह सकती है।
Real-Life Analogy से समझें
मान लीजिए आपके घर में एक Study Table है। सुबह आप उसे पढ़ाई के लिए इस्तेमाल करते हैं, दोपहर में आपका भाई उस पर Laptop चलाता है, और रात को पापा Office का काम करते हैं। Table एक ही है (Common Memory), लेकिन उसे अलग-अलग समय पर अलग-अलग लोग Use करते हैं। Union बिल्कुल इसी Concept पर काम करता है — “One Space, Many Users” (एक जगह, कई इस्तेमाल)।
C Language में Union Declaration (Syntax)
Union बनाने का Syntax बिल्कुल Structure जैसा है, सिर्फ struct की जगह union Keyword लिखना होता है।
union UnionName
{
data_type member1;
data_type member2;
// और Members...
};Line-by-Line Explanation:
- union — Compiler को बताता है कि हम Union बना रहे हैं।
- UnionName — Union का नाम (जैसे Data, Student)।
- { } — इन Brackets के अंदर सभी Members लिखे जाते हैं।
- ; — अंत में Semicolon लगाना अनिवार्य है।
Union Variable बनाने के दो तरीके
तरीका 1 — Declaration के साथ ही Variable बनाएं:
union Data
{
int i;
char c;
} d1, d2;तरीका 2 — main() Function के अंदर Variable बनाएं (सबसे सामान्य तरीका):
union Data
{
int i;
char c;
};
int main()
{
union Data d1;
return 0;
}Union का Basic Example (Code के साथ)
नीचे दिए गए Program को ध्यान से पढ़ें। यह Union in C Programming with Example का सबसे आसान और स्पष्ट उदाहरण है:
#include <stdio.h>
#include <string.h>
// Union to store different types of data
union Data {
int i; // Integer value
float f; // Floating-point value
char str[20]; // String
};
int main() {
union Data d;
// Store and display an integer
d.i = 10;
printf("Integer: %d\n", d.i);
// Store and display a float
d.f = 220.5f;
printf("Float: %.6f\n", d.f);
// Store and display a string
strcpy(d.str, "C Programming");
printf("String: %s\n", d.str);
return 0;
}
Step-by-Step Explanation:
- पहले d.i = 10 — Memory में Integer 10 Store हुआ, सही Output आया।
- फिर d.f = 220.5 — वही Memory अब Float से Overwrite हो गई, पुराना 10 मिट गया।
- आखिर में d.str = “C Programming” — String ने Float को भी Replace कर दिया।
ज़रूरी बात: हर बार सही Output इसलिए मिला क्योंकि हमने एक-एक करके Value Use की। अगर हम तीनों को एक साथ Access करने की कोशिश करते, तो Data Corrupt (गलत) हो जाता।

Union Members को Initialize और Access करना
Initialization (सही और गलत तरीका)
सही तरीका — सिर्फ पहले Member को Initialize करें:
union Data d = {100}; // int i = 100 store होगा
गलत तरीका — एक साथ सभी को Value देना:
union Data d = {100, 3.14, “Hello”}; // Error आएगा!
Designated Initializer (C99 Standard) — किसी खास Member को Set करना:
union Data d = {.f = 3.14}; // Float member को directly set करना
Members को Access करना
Union के Members Access करने के लिए दो Operators होते हैं:
- Dot Operator (.) — Normal Variable के लिए: d.i = 10;
- Arrow Operator (->) — Pointer Variable के लिए: ptr->i = 10;
Beginners की Common Logical Mistake
d.i = 10;
printf(“%f”, d.f); // गलत Output आएगा!
ऐसा इसलिए होता है क्योंकि Memory में Integer का Binary Format Store है, लेकिन हम उसे Float की तरह पढ़ने की कोशिश कर रहे हैं। दोनों का Data Store Format अलग होता है, इसलिए Garbage Value आती है।
Union का Memory Concept (How Union Stores Data)
यह Section सबसे महत्वपूर्ण है। Union का Size उसके सबसे बड़े Member के Size के बराबर होता है।
हमारे union Data Example में:
- int i = 4 bytes
- float f = 4 bytes
- char str[20] = 20 bytes
इसलिए पूरे Union का Size = 20 bytes होगा। यही 20 bytes तीनों Members आपस में Share करते हैं, और सभी का Starting Memory Address एक ही होता है।
Structure में यही Size होता: 4 + 4 + 20 = 28 bytes। यानी Union ने 8 bytes Memory बचाई।
Size of Union in C (sizeof के साथ Proof)
Union का Size हमेशा उसके सबसे बड़े Member के Size के बराबर (या Alignment के कारण थोड़ा बड़ा) होता है। नीचे दिया गया Example sizeof का उपयोग करके इसे Verify करता है।
#include <stdio.h>
// Union with different data types
union Test {
int x; // Integer (4 bytes)
char y[10]; // Character array (10 bytes)
double z; // Double (typically 8 bytes)
};
int main() {
union Test t;
// Display the size of the union
printf("Size of Union: %zu bytes\n", sizeof(t));
return 0;
}
यहाँ सबसे बड़ा Member char y[10] है जो 10 bytes का है, लेकिन Compiler Memory Alignment (4 या 8 के Multiple में) की वजह से Size को 16 bytes तक Pad कर देता है। यह CPU की Fast Access Speed के लिए किया जाता है।
Structure vs Union — मुख्य अंतर (Difference)
Structure और Union दोनों User-Defined Data Types हैं, लेकिन Memory Allocation, Data Storage और Member Access के तरीके में महत्वपूर्ण अंतर होता है. नीचे दी गई Table इन दोनों के बीच के मुख्य Differences को सरल भाषा में दिखाती है।
| विशेषता | Structure (struct) | Union (union) |
|---|---|---|
| Keyword | struct | union |
| Memory | हर Member को अलग Memory | सभी Members एक ही Memory Share करते हैं |
| Total Size | सभी Members का जोड़ | सबसे बड़े Member का Size |
| एक साथ Access | सभी Members एक साथ Access होते हैं | एक समय पर सिर्फ एक ही Member Valid होता है |
| Data Safety | एक Member बदलने से दूसरा Safe रहता है | एक Member बदलने से दूसरा Overwrite हो जाता है |
| उपयोग | पूरा Record Store करना (जैसे Employee) | एक समय पर एक Type का Data (Memory बचाने के लिए) |
Advantages of Union in C (फायदे)
1. Memory की बचत (Memory Saving): Union का सबसे बड़ा फायदा यह है कि यह कम RAM वाले Devices जैसे Embedded Systems (Microwave, Smart Watch) के लिए बेहद उपयोगी है। फालतू Memory बर्बाद नहीं होती।
2. Efficient Data Handling: जब पहले से पता हो कि Data कई Options में से सिर्फ एक Type का होगा (जैसे Result या तो int होगा या char), तब Union सबसे बेहतर विकल्प है।
3. Low-Level Programming में उपयोगी: Device Drivers, Network Protocols और OS Kernel जैसी जगहों पर Union का Use होता है जहाँ हर Byte का हिसाब रखना पड़ता है।
Disadvantages of Union in C (नुकसान)
1. Data Overwriting: जैसे ही नए Member को Value दी जाती है, पुराना Data तुरंत मिट जाता है। इसे Control करना Programmer की ज़िम्मेदारी है।
2. Debugging में कठिनाई: यह Track करना मुश्किल होता है कि किस समय Memory में कौन सा Member Active है। गलती से दूसरे Type का Data पढ़ने पर Garbage Value आती है और Bug ढूँढना कठिन हो जाता है।
Uses of Union in C (वास्तविक उपयोग)
Union in C आज भी Low-Level Programming में बड़े पैमाने पर Use होता है:
- Device Drivers — Hardware Registers (जैसे Printer, Keyboard) को कुशलता से Access करने के लिए।
- Kernel Programming — Linux या Windows के Core (Kernel) में Memory Management के लिए।
- Network Protocols — एक ही Data Packet को Header और Payload दोनों की तरह पढ़ने के लिए।
- Embedded Systems — कम RAM वाले Microcontrollers में अलग-अलग Sensor Data Handle करने के लिए।
Conclusion ( निष्कर्ष )
आज हमने Union in C Programming with Example को बहुत गहराई से समझा — Declaration से लेकर Memory Concept तक, Advantages से लेकर Real-World Uses तक। एक बात हमेशा याद रखें: “Union का मतलब है Sharing” — एक Memory Location, कई Data Types, लेकिन एक समय पर सिर्फ एक ही Active। यह Concept Memory Management की नींव है और इसे समझे बिना Embedded Systems या System Programming में आगे बढ़ना मुश्किल होगा।
अब बारी है Practice की! इस Post में दिए गए सभी Code Examples को अपने Compiler पर ज़रूर Run करें, खुद से छोटे-छोटे बदलाव करें और देखें क्या होता है — यही सबसे अच्छा तरीका है सीखने का। अगर कोई Doubt हो तो Comment में ज़रूर पूछें। इस Post को अपने दोस्तों के साथ Share करें ताकि वे भी C Programming में आगे बढ़ सकें।
