Difference between Structure and Union

Difference between Structure and Union: Union व Structure को Define करने का तरीका एक जैसा ही है। जिस तरह Structure को define करने के लिए struct key word का प्रयोग करते हैं, उसी प्रकार Union को Define करने के लिए union key word का प्रयोग किया जाता है। जो भी काम एक Structure के साथ किया जाता है, वे सभी काम union के साथ किये जा सकते हैं। जैसे union प्रकार का Variable Declare करना, उस Variable को मान प्रदान करना, Union के Members को access करना आदि। लेकिन इन दोनों के काम करने के तरीके में अन्तर है।

एक Structure के सभी Members की Memory में एक अलग Memory Location होती है। यानी एक Structure के सभी Members Memory में space reserve करते हैं। लेकिन एक Union में Declare किये गए सभी Variable Memory के एक ही Memory Location पर Store होते हैं। एक Union में हम विभिन्न प्रकार के Members को रख सकते हैं, लेकिन एक समय में केवल एक ही प्रकार का मान Union के अंदर किसी Member में Store रह सकता है।

इस कारण से हम एक समय में केवल एक ही Union Member को access कर सकते हैं। हम जब Union define करते हैं, तब Union में सबसे अधिक जगह Store करने वाले Variable के बराबर Memory Reserve हो जाती है। यानी यदि एक Union में एक Member int प्रकार का व दूसरा Member double प्रकार का है, तो ये Union Memory में चार Byte की space Reserve कर लेता है। क्योंकि double प्रकार का Variable Memory में चार Byte लेता है।

जैसा कि अभी बताया कि एक Union के सभी Members समान Memory Location का प्रयोग करते हैं, इसलिए यदि हम एक ऐसा Union बनाएं, जिसमें एक Member long Double प्रकार का हो, तो हम इस Union में int प्रकार के चार मान, Double प्रकार के दो मान व char प्रकार के आठ मान Store कर सकते हैं। आइये समझते हैं कि किस प्रकार से Structure व Union में मान Store होते हैं। हम समान Members का एक Statement व एक Union बनाते हैं।

Difference between Structure and Union

प्रथम प्रोग्राम Structure है। ये Memory में निम्न प्रकार से  Variable Data के लिए space reserve करेगा।

Difference between Structure and Union

जबकि union Memory में निम्नानुसार Space Reserve करता है।

Difference between Structure and Union

इस प्रकार Union Memory में सिर्फ दो Byte ले रहा है। ध्‍यान दें कि जो Memory Location Data.val Use कर रहा है, वही Memory Location Data.ch[0] Data.ch[1] भी Use कर रहे हैं। इस प्रकार इन दो Byte को एक साथ या दो अलग-अलग जगह से Use किया जा सकता है।

अब एक उदाहरण देखते हैं। माना Data.val का मान 512 है। हम जानते हैं कि कोई भी मान Memory में Binary Digits के रूप में ही Store होता है। 512 की Binary 1000000000 होती है।

ये बात हमेंशा ध्‍यान रखनी चाहिये कि Memory में किसी भी मान की Binary Digit के दो भाग होते हैं, जिन्हे क्रमश: Low Byte व High Byte कहते हैं। बडी संख्‍या को High Byte व छोटी संख्‍या को Low Byte कहा जाता है। int प्रकार का Variable Memory में दो Byte या 16 Bit में अंको को Store करता है। इस प्रकार आठ Bit हर Byte में Store होते हैं। अंक 512 के भी दो भाग एक-एक Byte में जा कर 00000010 व 00000000 की तरह Store होते हैं। यदि ये संख्‍या Memory में Store हो तो ये निम्नानुसार Store होनी चाहिये:

Difference between Structure and Union

लेकिन यदि हम Data.ch[0] व Data.ch[1] को print करते हैं, तो मान क्रमश: 0 व 2 प्राप्त होता है, जो कि इस प्रकार Digit Store होने के कारण क्रमश: 2 व 0 होना चाहिये। ऐसा इसलिए होता है क्योंकि Memory में High Byte, Low Byte से हमेंशा पहले Store होती है। यानी प्रथम byte 00000010 दूसरी Byte 00000000 से बडी है इसलिए ये Memory में निम्नानुसार Store होती है:

Difference between Structure and Union

इस प्रकार ch[0] का मान 0 व ch[1] का मान 2 Output में print होता है। इस प्रकार हमने देखा कि अंक 512 किस प्रकार दो भागों में बंट कर 0 व 2 में बदल गया। Union का यही फायदा है कि हम एक प्रकार में मान को Store करके दूसरे प्रकार से भी access कर सकते हैं। ऐसा इसी कारण से होता है क्योंकि union के जितने भी Member होते हैं, वे मान को Store करने के लिए समान Memory Location का प्रयोग करते हैं।

जब हम किसी Union Member को कोई मान प्रदान कर देते हैं तो फिर यदि उसी Union के किसी अन्‍य Member को कोई मान Input कर दिया जाए, तो पहले वाला मान हट जाता है और दूसरा Inputted मान पहले वाले मान पर Over Write हो जाता है, क्योंकि दोनों मान Memory में Store होने के लिए समान Memory Location का ही प्रयोग करते हैं।

union का प्रयोग सामान्‍य प्रोग्राम में Use करने के लिए भी किया जाता है, लेकिन इसका प्रयोग अधिकतर “C” द्वारा Hardware के साथ काम करने के लिए किया जाता है। हम Union को Structure के साथ मिला कर भी प्रयोग कर सकते हैं। आवश्‍यकतानुसार इसकी Nesting कर सकते हैं और Structure के अंदर भी इसे Nested किया जा सकता है साथ ही Union के अंदर Structure को भी Nested किया जा सकता है। Union के साथ ये सारे काम आवश्‍यकतानुसार किये जा सकते हैं। (Difference between Structure and Union – StackOverflow)

Structure with Function
Pointer and Structure

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS