Union

Union एक used defined data type है struct की तरह, जो की अलग-अलग प्रकार का डेटा रख सकता है, एक ही मेमोरी लोकेशन पर। Union सभी members एक ही मेमोरी address होता है, यानि की union का size उसमे उपस्तिथ सबसे बड़े member की size की बराबर होता है।

  • union c प्रोग्रामिंग में एक कीवर्ड है।
  • Union को define करने के लिए union keyword का उपयोग किया जाता।
  • Union के members को access करने के लिए dot (.) operator उसे करते है। लकिन यदि union variable pointer है तो वह हम -> operator से access करते है।

Video Reference

Define Union

union UnionName {
	// data_type variable_name;
  	// data_type variable_name;
  	....
};

Example – dot (.) operator

#include <stdio.h>

// union
union Person
{
    char *name;
    int age;
    float height;
};

int main()
{
    // p1 is union variable
    union Person p1;

    // initialize member of union variable p1
    p1.name = "Rahul";

    // display value of member variable
    printf("%s\n", p1.name);
    return 0;
}

// OUTPUT
// Rahul

Example – arrow operator (->)

जब union pointer declare किया जाता है तब हमें manually मेमोरी allocate करनी पड़नी है union members को store करने के लिए। मेमोरी allocate करने के लिए कुछ built-in functions उपयोग किया जाता है जो कि <stdlib.b> (standard library) मेमोरी है, इन्हे use करने के लिए ये library program में करनी पड़ेगी।

#include <stdio.h>
#include <stdlib.h>

// union
union Person
{
    char *name;
    int age;
    float height;
};

int main()
{
    // p1 is union variable
    union Person *p1 = (union Person*)malloc(sizeof(union Person));
    
    // initialize member of union variable p1
    p1->name = "Rahul";

    // display value of member variable
    printf("%s\n", p1->name);
    return 0;
}       

// OUTPUT
// Rahul

Note

union में एक time पर केवल एक ही member की value store कर सकता है, यदि एक से अधिक members की value assign कर देंगे तो जो last जो assign की होगी सिर्फ उसकी value रहेगी वाकी सभी के values access करने पर error आएगी या garwage value (Random Value) आएगी। एक बार में एक ही value access होती है।

    // initialize member of union variable p1
    p1->name = "Rahul";
    p1->age=22;

    // display value of member variable
    printf("%s\n", p1->name); // error
    printf("%d\n", p1->age); // error

// display value of member variable 
printf("%d\n", p1->age); // 22


Leave a Reply

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