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