Union in C Programming with Example – Step-by-Step Union को सीखें

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 से जुड़ी हर ज़रूरी जानकारी मिलेगी। तो बिना देर किए, चलिए शुरू करते हैं!

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;
}
▶️ Output Result
Integer: 10 Float: 220.500000 String: C Programming

Step-by-Step Explanation:

  1. पहले d.i = 10 — Memory में Integer 10 Store हुआ, सही Output आया।
  2. फिर d.f = 220.5 — वही Memory अब Float से Overwrite हो गई, पुराना 10 मिट गया।
  3. आखिर में d.str = “C Programming” — String ने Float को भी Replace कर दिया।

ज़रूरी बात: हर बार सही Output इसलिए मिला क्योंकि हमने एक-एक करके Value Use की। अगर हम तीनों को एक साथ Access करने की कोशिश करते, तो Data Corrupt (गलत) हो जाता।

union in c programming with example

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;
}
▶️ Output Result
Size of Union: 16 bytes

यहाँ सबसे बड़ा 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)
Keywordstructunion
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 में आगे बढ़ सकें।

Frequently Asked Questions

Q 1: क्या Union के अंदर Structure इस्तेमाल कर सकते हैं?
Ans: हाँ, बिल्कुल। Union के अंदर Structure और Structure के अंदर Union (Nested) दोनों संभव हैं। यह Complex Data Structures बनाने में बहुत काम आता है।
Q 2: Union और Structure में कौन सा बेहतर है?
Ans: दोनों अपनी जगह सही हैं। अगर आपको सारा Data एक साथ Store करना है (जैसे Employee Record में नाम, उम्र, वेतन), तो Structure बेहतर है। अगर Data के कई Options हैं लेकिन एक समय पर सिर्फ एक ही Use होगा, तो Union सबसे बेहतर विकल्प है।
Q 3: क्या Union के सभी Members को एक साथ Print कर सकते हैं?
Ans: नहीं। Union में एक समय पर सिर्फ वही Member सही Value दिखाता है जिसे सबसे हाल में Value दी गई हो। बाकी Members Garbage Value दिखाते हैं क्योंकि उनकी Memory Overwrite हो चुकी होती है।
Q 4: sizeof Operator Union में Padding क्यों जोड़ता है?
Ans: CPU की Efficiency बढ़ाने के लिए Padding जोड़ी जाती है। Processor तब Data को सबसे तेज़ Access करता है जब वह proper Alignment (जैसे 4, 8, या 16 bytes के Multiple में) में Store हो। इसीलिए Compiler ज़रूरत पड़ने पर थोड़ी Extra Memory (Padding) Add कर देता है।
Q 5: क्या Function Union को Return कर सकता है?
Ans: हाँ, बिल्कुल। C Language में Functions Union को Return Value के रूप में Return कर सकते हैं और Function Argument (Input) के रूप में भी Accept कर सकते हैं। इसका Syntax बिल्कुल Structure Return करने जैसा ही होता है।

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top