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("%sn", 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("%sn", 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("%sn", p1->name); // error
printf("%dn", p1->age); // error
// display value of member variable printf("%dn", p1->age); // 22
Union vs Struct
Union एवं Struct दोनों ही User-defined Data Type है, जो एक से अधिक प्रकार के डाटा को रख सकते है।
S.No. | Union | Struct |
1 | Union variable का Size उसमे उपस्थित सबसे बड़े Member के साइज के बराबर होता है। | Struct Variable का साइज उसमे उपस्थित Members के कुल साइज के बराबर होता है। |
2 | Union को डिफाइन कर के लिए ‘union’ Keyword किया जाता है। | Struct को डिफाइन कर के लिए ‘struct’ Keyword किया जाता है। |
3 | यूनियन का उपयोग बहुत काम किया जाता है Programs में। | Struct का उपयोग सबसे अधिक किया जाता है Programs में। |