C यूनियनों (उदाहरणों के साथ)

इस ट्यूटोरियल में, आप C प्रोग्रामिंग में यूनियनों के बारे में जानेंगे। अधिक विशेष रूप से, यूनियनों को कैसे बनाया जाए, इसके सदस्यों तक पहुंचें और यूनियनों और संरचनाओं के बीच के अंतरों को जानें।

एक संघ एक उपयोगकर्ता-परिभाषित प्रकार है जो सी में एक प्रमुख अंतर को छोड़कर स्ट्रक्चर्स के समान है। संरचनाएं अपने सभी सदस्यों को संग्रहीत करने के लिए पर्याप्त स्थान आवंटित करती हैं। संघों को केवल सबसे बड़े सदस्य को संग्रहीत करने के लिए स्थान आवंटित करते हैं।

संघ को कैसे परिभाषित करें?

हम unionयूनियनों को परिभाषित करने के लिए कीवर्ड का उपयोग करते हैं । यहाँ एक उदाहरण है:

 union car ( char name(50); int price; ); 

उपरोक्त कोड एक व्युत्पन्न प्रकार को परिभाषित करता है union car

संघ चर बनाएँ

जब एक संघ परिभाषित किया जाता है, तो यह एक उपयोगकर्ता-परिभाषित प्रकार बनाता है। हालाँकि, कोई मेमोरी आवंटित नहीं है। किसी दिए गए यूनियन प्रकार के लिए मेमोरी आवंटित करने और इसके साथ काम करने के लिए, हमें चर बनाने की आवश्यकता है।

यहां बताया गया है कि हम यूनियन वेरिएबल कैसे बनाते हैं।

 union car ( char name(50); int price; ); int main() ( union car car1, car2, *car3; return 0; ) 

संघ चर बनाने का दूसरा तरीका है:

 union car ( char name(50); int price; ) car1, car2, *car3; 

दोनों ही मामलों में, यूनियन चर car1, car2 और एक यूनियन पॉइंटर car3 union carप्रकार के बनाए जाते हैं।

एक संघ के सदस्यों का उपयोग

हम .एक संघ के सदस्यों तक पहुँचने के लिए ऑपरेटर का उपयोग करते हैं । पॉइंटर चर तक पहुंचने के लिए, हम ->ऑपरेटर का उपयोग भी करते हैं ।

उपरोक्त उदाहरण में,

  • के लिए पहुँच मूल्य के लिए car1, car1.priceप्रयोग किया जाता है।
  • पहुँच मूल्य के लिए उपयोग कर रहा car3है, या तो (*car3).priceया car3->priceइस्तेमाल किया जा सकता।

यूनियनों और संरचनाओं के बीच अंतर

आइए, यूनियनों और संरचनाओं के बीच के अंतर को प्रदर्शित करने के लिए एक उदाहरण लेते हैं:

 #include union unionJob ( //defining a union char name(32); float salary; int workerNo; ) uJob; struct structJob ( char name(32); float salary; int workerNo; ) sJob; int main() ( printf("size of union = %d bytes", sizeof(uJob)); printf("size of structure = %d bytes", sizeof(sJob)); return 0; ) 

आउटपुट

 संघ का आकार = 32 संरचना का आकार = 40 

संघ और संरचना चर के आकार में यह अंतर क्यों है?

यहाँ, sJob का आकार 40 बाइट्स है क्योंकि

  • का आकार name(32)32 बाइट्स है
  • का आकार salary4 बाइट्स है
  • का आकार workerNo4 बाइट्स है

हालाँकि, uJob का आकार 32 बाइट्स है। ऐसा इसलिए है क्योंकि संघ चर का आकार हमेशा इसके सबसे बड़े तत्व का आकार होगा। उपरोक्त उदाहरण में, इसके सबसे बड़े तत्व का आकार, ( name(32)), 32 बाइट्स है।

एक संघ के साथ, सभी सदस्य एक ही मेमोरी साझा करते हैं

उदाहरण: केंद्रीय सदस्यों तक पहुंचना

 #include union Job ( float salary; int workerNo; ) j; int main() ( j.salary = 12.3; // when j.workerNo is assigned a value, // j.salary will no longer hold 12.3 j.workerNo = 100; printf("Salary = %.1f", j.salary); printf("Number of workers = %d", j.workerNo); return 0; )

आउटपुट

 वेतन = श्रमिकों की संख्या = 100 

यह जानने के लिए कि यूनियनों का उपयोग कहाँ किया जाता है, हमें C Unions की आवश्यकता क्यों है?

दिलचस्प लेख...