Union क्या है? – What is Union in C In Hindi

जिस तरह सी लैंग्वेज में हम स्ट्रक्चर बनाते थे ठीक उसी तरह यहाँ हम Union बनाने वाले है तो यदि आपको स्ट्रक्चर के बारे में अच्छे से नहीं पता तो सबसे पहले आप स्ट्रक्चर के बारे में यहाँ से जान ले -:

इस आर्टिकल में हम जो कुछ भी पढ़ेंगे वो सभी चीजे काफी हद तक स्ट्रक्चर के कांसेप्ट से मिलती है 

चूँकि स्ट्रक्चर के कई कांसेप्ट Union से मिलती है इसलिए structure और union के बिच तुलना भी किया जाता है |  

इस आर्टिकल में हम यूनियन क्या है? (What is Union in C in Hindi) और सी लैंग्वेज में यूनियन का उपयोग कैसे करते है? ये जानने के साथ साथ ये भी जानंगे कि structure और union में क्या अंतर है?

तो चलिए बिना समय गवाए सबसे पहले जानते है कि Union क्या है? (What is Union in C in Hindi)

Union in C In Hindi

Union क्या है? (What is Union in C In Hindi)

Union भी स्ट्रक्चर की तरह एक यूजर डिफाइंड डेटा टाइप है जो डिफरेंट डेटा टाइप के डेटा मेंबर को contain करता है | 

Union में उपस्थित सभी मेंबर एक ही लोकेशन को शेयर करते है जबकि structure में हर मेंबर को अलग से मेमोरी मिलती थी | 

यूनियन में एक समय में एक से ज्यादा मेंबर को एक साथ मेमोरी नहीं मिल सकती 

इसलिए इसमें एक समय में केवल एक ही मेंबर वैल्यू contain कर सकता है जबकि स्ट्रक्चर में एक समय में सभी मेंबर अलग अलग वैल्यू contain कर सकते है |

Syntax of Declaring Union

सी लैंग्वेज में union बनाने के लिए हमे union कीवर्ड का उपयोग करना पड़ता है इसका बेसिक सिंटेक्स कुछ ऐसा होता है -:

union union_name 
{
  //member definitions

   Data_Type member1_variable;
   Data_Type member2_variable;
   Data_Type member3_variable;
   …
};
  • union एक कीवर्ड है जिसकी मदद से हम नया डेटा टाइप बनाते है 
  • union_name  – यह union डेटा टाइप का नाम है ये नाम आप अपने हिसाब से कुछ भी रख सकते है जैसे – employee, college, item आदि | 
  • DataType – DataType में int, char, float, double कुछ भी आ सकता है | 
  • member1_variable – यह वेरिएबल का नाम है | Union के अंदर स्थित हर element मेंबर कहलाता है |

Example -:

union item 
{   int x;  
    float y;  
    char z;
}; 

Note -: Union की साइज यूनियन के सबसे बड़े डेटा मेंबर की साइज के बराबर होती है | for example – यदि किसी यूनियन में 1, 2,4, 8 बाइट वाले यूनियन मेंबर है तो यूनियन की साइज 8 बाइट होगी | 

How to Declare Union Variables

सी लैंग्वेज में जिस तरह हम स्ट्रक्चर वेरिएबल को डिक्लेअर करते है ठीक उसी तरह यहाँ पर हम union वेरिएबल को डिक्लेअर करेंगे | Union variable को हम इसलिए डिक्लेअर करते है ताकि union मेंबर को आसानी से एक्सेस कर सके और अपने प्रोग्राम में कही भी उपयोग कर सके है | 

Example -:

union item   
{   int x;  
    float y;  
    char z;  
}; 

यहाँ पर union कीवर्ड है और item एक नए यूजर डिफाइंड डेटा टाइप है जिसके अंदर int , float और char की मदद से x, y और z नाम से तीन union मेंबर  डिक्लेअर है | यदि हमे इन तीनो मेंबर को एक्सेस करना है तो इसके लिए हमे इस item डेटा टाइप का एक वेरिएबल डिक्लेअर करना पड़ेगा | 

सी लैंग्वेज में हम union वेरिएबल को स्ट्रक्चर की ही तरह दो तरीके से डिक्लेअर कर सकते है -:

  • main() फंक्शन के अंदर union कीवर्ड के द्वारा |
  • union डिफाइन करते समय ही union के आखिर में | 

Method 1 -:  main() फंक्शन के अंदर Union कीवर्ड के द्वारा 

आइये इसको हम एक example के द्वारा अच्छे से समझते है

Example -: 

#include<stdio.h>
union item   
{   int x;  
    float y;  
    char z;  
};  
void main()
{
union item it1, it2;  
}

जैसे की मैंने ऊपर बताया है, union मेंबर को access करने के लिए हमे union वेरिएबल डिक्लेअर करना पड़ता है | तो यहाँ इस example में हमने union मेंबर को एक्सेस करने के लिए main() फंक्शन में union item it1, it2; करके it1, और it2 नाम से दो union वेरिएबल डिक्लेअर किया है जिसकी मदद से हम union मेंबर को आसानी से एक्सेस कर सकते है | 

Method 2 -: Union define करते समय ही Union के आखिर में | 

आइये इसको भी हम एक example के द्वारा समझते है -:

Example -:

union item   
{   int x;  
    float y;  
    char z;  
}it1,it2;  

Union वेरिएबल को हम ऊपर दिए गए example की तरह भी डिक्लेअर कर सकते है | 

  • यूनियन मेंबर को एक्सेस करने के लिए डॉट(.) ऑपरेटर का उपयोग किया जाता है और यदि कोई यूनियन पॉइंटर वेरिएबल, यूनियन मेंबर को access करना चाहता है तो डॉट(.) ऑपरेटर की जगह -> (structure pointer operator) का उपयोग किया जाता है | 

Initialization of Union Members

Union members को हम कुछ इस तरह से initialize कर सकते है -:

#include<stdio.h>
union item   
{   int x;  
    float y;  
   char z;
};  
void main()
{
union item it1;  

 //initialization of each member separately

it1.x = 35;
it1.z = 'a';
it1.y = 15.5;

}

Accessing Members in Union 

स्ट्रक्चर की तरह Union मेंबर को भी हम इन दो तरीको से एक्सेस कर सकते है | आइये जानते है इन तरीको के बारे में | 

  • Dot(.) (member or dot operator) द्वारा
  • -> (union pointer operator) द्वारा

Method 1 -: Dot(.) operator द्वारा

Dot(.) operator द्वारा हम यूनियन वेरिएबल को कुछ एक्सेस करके उनमे अपने हिसाब से कोई वैल्यू भी initialize कर सकते है और उनको स्क्रीन में प्रिंट भी करा सकते है |

Examples -:

#include<stdio.h>
union item   
{   int x;  
    float y;  

};  
void main()
{
union item it1;  

 //initialization of each member separately

it1.x =  10;

printf( " x = %d \n",it1.x);    

it1.y = 15.5;

printf( " y  = %f ", it1.y);    

}

Output -:

x = 10 
y =  15.5

Note -: एक समय में हम एक ही यूनियन मेंबर को एक्सेस कर सकते है | यदि हम एक समय में एक से ज्यादा यूनियन मेंबर को एक्सेस करने का प्रयाश करते है तो कम एरर आता है | 

Example -: if we try to access all union members at the same time

#include<stdio.h>
union item   
{   int x;  
    float y;  
 char z;
};  
void main()
{
union item it1;  

 //initialization of each member separately

it1.z = 'a';
it1.y = 15.5;

printf( " x = %c y  = %f ", it1.z, it1.y);    
}

Output -:

x = y = 15. 5

इस उदाहरण में हमने एक साथ x और y को एक्सेस करके दोनों में स्टोर वैल्यू को स्क्रीन में प्रिंट करना चाहा मगर ऐसा नहीं हुवा कम्पाइलर केवल y में स्टोर वैल्यू को ही प्रिंट कर पाया क्योकि जैसे मैंने ऊपर बताया, यूनियन में हम एक समय में केवल एक ही यूनियन मेंबर को एक्सेस कर सकते है | 

इससे पहले वाले उदाहरण में हमने दोनों मेंबर को अलग अलग एक्सेस करके उनकी वैल्यू को स्क्रीन में प्रिंट कराया था इसलिए आउटपुट बिलकुल सही आया | 

नोट -: यदि यूनियन वेरिएबल एक पॉइंटर है तो हम एक समय में एक से ज्यादा मेंबर को एक्सेस कर सकते है | 

आइये अब हम यूनियन मेंबर को एक्सेस करने के दूसरे तरीके के बारे में जानते है 

Method 2: -> (union pointer operator) द्वारा

-> (union pointer operator) द्वारा हम union मेंबर को आसानी से एक्सेस कर सकते है | आइये इसका एक उदाहरण समझते है -:

Example Program

#include <stdio.h>
union test {
    int x;
    char y;
};
void main()
{
    union test p1;
    p1.x = 65;
  
    // p2 is a pointer to union p1
    union test* p2 = &p1;
  
    // Accessing union members using pointer
    printf("%d %c", p2->x, p2->y);
}

Output -:

65 A

इस उदाहरण में हमने दो पॉइंटर वेरिएबल p1, p2 बनाया और यूनियन मेंबर को पॉइंटर वेरिएबल द्वारा एक्सेस करने -> का उपयोग किया | चूँकि 65 का ASCII वैल्यू A होता है इसलिए रिजल्ट में p1 की वैल्यू  65 और p2 की वैल्यू A प्रिंट हुवा |

Why We Need Union

सी लैंग्वेज में यूनियन का उपयोग मेमोरी की बचत करने के लिए किया जाता है | for example – एक प्रोग्राम में डिफरेंट टाइप की वैल्यू हो सकती है इन वैल्यू को यदि हम अलग अलग मेमोरी स्पेस में स्टोर करेंगे तो मेमोरी की खपत ज्यादा होगी | मगर यदि हम इन वैल्यू को रेप्लस करके उपयोग करे तो एक ही जगह पर हम अलग अलग टाइप की वैल्यू को स्टोर करके उपयोग कर पाएंगे इससे मेमोरी की काफी बचत होगी |

यूनियन मेंबर आपस में एक ही मेमोरी लोकेशन का उपयोग डेटा को स्टोर करने के लिए करते है | यूनियन एम्बेडेड प्रोग्रामिंग में काफी उपयोगी होता है |

स्ट्रक्चर और यूनियन में अंतर (Different Between Structure And Union In C in Hindi)

Structure Union
structure को डिफाइन करने के लिए struct कीवर्ड काउपयोग किया जाता है | Unionको डिफाइन करने के लिए union कीवर्ड काउपयोग किया जाता है | 
सभी स्ट्रक्चर मेंबर को डेटा स्टोर करने के लिए अलग अलग मेमोरी लोकेशन मिलती है सभी Unio मेंबर को डेटा स्टोर करने के लिए केवल एक ही मेमोरी लोकेशन मिलता है 
एक डेटा मेंबर की वैल्यू में चंगेस करने पर इसका इफ़ेक्ट दूसरे डेटा मेंबर पर नहीं पड़ता |एक डेटा मेंबर में होने वाला बदलाव दूसरे मेंबर्स को प्रभावित करता है |
एक समय में एक से ज्यादा मेंबर को एक्सेस करके वैल्यू initialize कर सकते है | एक समय में केवल एक ही मेंबर को एक्सेस करके वैल्यू initialize कर सकते है |
स्ट्रक्चर की साइज स्ट्रक्चर मेंबर के साइज की जोड़ होती है | यूनियन की साइज यूनियन में स्थित सबसे बड़े मेंबर की साइज के बराबर होती है |
हर स्ट्रक्चर मेंबर को मेमोरी में स्पेस मिलता है |हर यूनियन मेंबर को मेमोरी में स्पेस नहीं मिलता |
यह फ्लेक्सिबल ऐरे सपोर्ट करता है यह फ्लेक्सिबल ऐरे सपोर्ट नहीं करता 
एक समय में एक से ज्यादा मेंबर को एक्सेस कर सकते है |एक समय में केवल एक ही मेंबर को एक्सेस कर सकते है |

यूनियन के लाभ (Advantages of Union)

  • यह स्ट्रक्चर की तुलना में काफी काम मेमोरी स्पेस लेता है | 
  • यूनियन उपयोग करने पर आप केवल लास्ट मेंबर को डायरेक्टली एक्सेस कर सकते है | 
  • यूनियन तब ज्यादा उपयोगी होता है जब आपको एक साथ कई सारे डेटा मेंबर के वैल्यू को एक ही मेमोरी लोकेशन को शेयर करते हए  स्टोर करना होता है |
  • इसकी साइज सबसे बड़े यूनियन मेंबर की साइज के बराबर होती है 

यूनियन के नुकसान (Disadvantages of Union)

  • एक समय में एक ही मेंबर को एक्सेस कर सकते है | 
  • एक से ज्यादा यूनियन मेंबर को एक साथ उपयोग नहीं कर सकते | 
  • एक मेमोरी लोकेशन एक से ज्यादा यूनियन मेंबर के बिच शेयर्ड होती है | 

Example Program of Union In C

#include <stdio.h>
union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
  
   it.x = 102;
   printf("%d\n", it.x);

    it.y = 20.2;
    printf("%f\n", it.y);

    it.ch = 'a';
   printf("%c\n", it.ch);
    
    return 0;
}

Output -:

102
20.2
A

Program Explanation 

चूँकि यूनियन में हम एक समय में केवल एक मेंबर को एक्सेस कर सकते है इसलिए इस प्रोग्राम में हमने एक एक मेंबर को एक्सेस करके उनमे वैल्यू इनपुट किया और स्क्रीन में प्रिंट करा दिया | 

यदि हम तीनो को बरी बरी एक्सेस करके एक साथ वैल्यू प्रिंट  करने का प्रयास करते तो केवल आखिर की ही वैल्यू स्क्रीन में प्रिंट होती | 

Conclusion  

दोस्तों आशा करता हु कि आज के इस आर्टिकल को पढ़ने के बाद आपको यूनियन क्या है? (What is Union in C in Hindi) और सी लैंग्वेज में यूनियन का उपयोग कैसे करते है? से संबंधित सभी जानकारी मिल गई होगी और आपको और कही इसके बारे में सर्च करना नहीं पड़ेगा |

अगर आप सी लैंग्वेज का Complete Tutorial चाहते है तो मेरे इस पोस्ट C Language Tutorial In Hindi को देखे यहाँ आपको C Programming Language के सभी टॉपिक्स step by step मिल जाएगी |

दोस्तों आशा करता हु कि आपको ये पोस्ट पसंद आई होगी और आपको यूनियन क्या है? (What is Union in C in Hindi) और सी लैंग्वेज में यूनियन का उपयोग कैसे करते है?  के बारे में काफी जानकरी हुई होगी |

अगर आपको ये पोस्ट पसंद आया है तो इस पोस्ट को अपने अपने दोस्तों को शेयर करना न भूलिएगा ताकि उनको भी ये जानकारी प्राप्त हो सके |

अगर आपको अभी भी   यूनियन क्या है? (What is Union in C in Hindi) से संबंधित कोई भी प्रश्न या Doubt है तो आप जरूर बताये मैं आपके सभी सवालों का जवाब दूँगा और ज्यादा जानकारी के लिए आप हमसे संपर्क कर सकते है

एसी ही नया टेक्नोलॉजी ,Programming Language, Coding , C Language, C++, Python Course , Java Tutorial से रिलेटेड जानकारियाँ पाने के लिए हमारे इस वेबसाइट को सब्सक्राइब कर दीजिए | जिससे हमारी आने वाली नई पोस्ट की सूचनाएं जल्दी प्राप्त होगी |

Jeetu Sahu is A Web Developer | Computer Engineer | Passionate about Coding, Competitive Programming and Blogging