कल्पना कीजिए कि आपके पास एक संरचना है जिसमें डेटा का एक पैकेट है। पैकेट में डेटा कुछ अलग-अलग प्रकारों का हो सकता है, इसलिए आप प्रकार को नामक सदस्य में टाइप करते हैं। तो इस पैकेट में डेटा को पढ़ने के लिए, आप पहले प्रकार की जांच करें, फिर आप संबंधित डेटा सदस्य को पढ़ते हैं, जिसमें पैकेट में डेटा होना चाहिए।
यूनियनों के बिना डेटा struct इस प्रकार दिखाई देगा:
struct data {
type_t type;
int number;
char * string;
double fraction;
long long big_number;
}
यह एक नहीं बल्कि बड़े डेटा संरचना होगा। यह हर संभव डेटा प्रकार में से एक को स्टोर करने के लिए पर्याप्त कमरे का उपयोग करता है। यह थोड़ा अनावश्यक है जब आप निश्चित रूप से केवल उन सदस्यों में से एक होंगे जिनके पास किसी भी समय उपयोगी जानकारी होती है।
अगर हम यूनियनों का उपयोग करें:
struct data {
type_t type;
union payload {
int number;
char * string;
double fraction;
long long big_number;
}
}
फिर struct प्रकार प्लस पेलोड सदस्यों में से एक (यानी आप स्मृति की राशि type_t के आकार के बराबर आवंटित करेगा स्टोर करने के लिए केवल पर्याप्त जगह और साथ ही एक सबसे बड़ा संभव पेलोड सदस्य का आकार)। यह अंतरिक्ष का एक भार बचाता है और यह अधिक कुशल है।
आपको सावधान रहना होगा, क्योंकि अगर पेलोड में एक int है, तो भी आप इसे डबल के रूप में पढ़ सकते हैं।आपको शायद बेहद अजीब संख्या मिल जाएगी क्योंकि आपका प्रोग्राम गलत तरीके से डेटा की व्याख्या करने की कोशिश करता है
स्रोत
2011-08-26 18:46:21
ठीक है, वास्तव में आपके प्रश्न का क्या कारण था? यूनियनों का उद्देश्य समय-साझा करना है एक मेमोरी एरिया, यानी एक ही मेमोरी क्षेत्र में अलग-अलग प्रकार के डेटा को स्टोर करने के लिए। यह कहीं भी काम कर सकता है, यानी एक यूनियन का इस्तेमाल स्वयं ही किया जा सकता है या इसे एक स्ट्रक्चर के सदस्य के रूप में इस्तेमाल किया जा सकता है। बिल्कुल कुछ खास नहीं है या संघ में अजीब एक संरचना के अंदर इस्तेमाल किया जा रहा है। इस कारण से, यह स्पष्ट नहीं है कि आप यह क्यों पूछ रहे हैं। – AnT