सी में संरचना और संघ के बीच अंतर

संरचना क्या है?

संरचना सी प्रोग्रामिंग भाषा में एक उपयोगकर्ता-परिभाषित डेटा प्रकार है जो विभिन्न डेटा प्रकारों के तार्किक रूप से संबंधित डेटा आइटमों को एक साथ जोड़ता है।

सभी संरचना तत्व सन्निहित मेमोरी स्थानों पर संग्रहीत किए जाते हैं। संरचना प्रकार चर एक नाम के तहत अलग-अलग डेटा प्रकारों के एक से अधिक डेटा आइटम संग्रहीत कर सकते हैं।

संघ क्या है?

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

संरचना घोषित करने का वाक्यविन्यास

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

संरचना को “स्ट्रक्चर” कीवर्ड और संरचना के नाम का उपयोग करके घोषित किया जाता है। संख्या 1, संख्या 2, संख्या 3 संरचना के अलग-अलग सदस्य हैं। बॉडी भाग को अर्धविराम (;) के साथ समाप्त किया जाता है।

सी प्रोग्रामिंग में संरचना का उदाहरण

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

उपरोक्त प्रोग्राम में, स्टूडेंट नामक एक संरचना बनाई गई है। इस संरचना में तीन डेटा सदस्य हैं: 1) नाम (स्ट्रिंग), 2) रोल_नंबर (पूर्णांक), और 3) अंक (फ्लोट)।

इसके बाद, छात्र की जानकारी संग्रहीत करने और उसे कंप्यूटर स्क्रीन पर प्रदर्शित करने के लिए एक संरचना चर sdt बनाया जाता है।

आउटपुट:

निम्नलिखित जानकारी दर्ज करें:

छात्र का नाम दर्ज करें: जेम्स

छात्र रोल नंबर दर्ज करें: 21

छात्र अंक दर्ज करें: 67

आपके द्वारा दर्ज की गई जानकारी है:

छात्र का नाम: जॉन

छात्र रोल नंबर: 21

छात्र अंक: 67.0

संघ की घोषणा का वाक्यविन्यास

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

यूनियन की घोषणा “यूनियन” कीवर्ड और यूनियन के नाम का उपयोग करके की जाती है। संख्या 1, संख्या 2, संख्या 3 यूनियन के अलग-अलग सदस्य हैं। बॉडी पार्ट को अर्धविराम (;) से समाप्त किया जाता है।

सी प्रोग्रामिंग में यूनियन का उदाहरण

#include <stdio.h>

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

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

आउटपुट:

1101109601

20.199892

a

उपरोक्त प्रोग्राम में, आप देख सकते हैं कि x और y के मान दूषित हो जाते हैं। केवल चर ch अपेक्षित परिणाम प्रिंट करता है। ऐसा इसलिए है क्योंकि, यूनियन में, मेमोरी स्थान सभी सदस्य डेटा प्रकारों के बीच साझा किया जाता है।

इसलिए, केवल वही डेटा सदस्य जिसका मान वर्तमान में संग्रहीत है, मेमोरी स्पेस पर कब्जा करेगा। चर ch का मान अंत में संग्रहीत किया गया था, इसलिए शेष का मान चर खो गया।

संरचना बनाम संघ

संरचना बनाम संघ
संरचना बनाम संघ

संरचना और संघ के बीच महत्वपूर्ण अंतर इस प्रकार है:

संरचना संघ
आप संरचना को परिभाषित करने के लिए struct कीवर्ड का उपयोग कर सकते हैं। आप यूनियन को परिभाषित करने के लिए यूनियन कीवर्ड का उपयोग कर सकते हैं।
संरचना के प्रत्येक सदस्य को एक अद्वितीय स्मृति स्थान सौंपा गया है। यूनियन में, मेमोरी स्थान को सभी डेटा सदस्यों द्वारा साझा किया जाता है।
एक डेटा सदस्य का मान बदलने से संरचना में अन्य डेटा सदस्यों पर कोई प्रभाव नहीं पड़ेगा। एक डेटा सदस्य का मान बदलने से यूनियन में अन्य डेटा सदस्यों का मान बदल जाएगा।
यह आपको एक साथ कई सदस्यों को आरंभ करने में सक्षम बनाता है। यह आपको यूनियन के केवल प्रथम सदस्य को आरंभीकृत करने में सक्षम बनाता है।
संरचना का कुल आकार प्रत्येक डेटा सदस्य के आकार का योग होता है। संघ का कुल आकार सबसे बड़े डेटा सदस्य का आकार है।
इसका उपयोग मुख्य रूप से विभिन्न प्रकार के डेटा को संग्रहीत करने के लिए किया जाता है। इसका उपयोग मुख्य रूप से उपलब्ध अनेक डेटा प्रकारों में से किसी एक को संग्रहीत करने के लिए किया जाता है।
यह आंतरिक पैरामीटर में लिखे प्रत्येक सदस्य के लिए स्थान घेरता है। यह आंतरिक पैरामीटर में लिखे उच्चतम आकार वाले सदस्य के लिए स्थान घेरता है।
आप एक समय में किसी भी सदस्य को पुनः प्राप्त कर सकते हैं। आप संघ में एक समय में एक ही सदस्य तक पहुंच सकते हैं।
यह लचीली सरणी का समर्थन करता है. यह लचीली सरणी का समर्थन नहीं करता है।

संरचना के लाभ

संरचना का उपयोग करने के पक्ष/लाभ इस प्रकार हैं:

  • संरचनाएं एक ही विषय के बारे में एक से अधिक डेटा को एक ही स्थान पर एकत्रित करती हैं।
  • यह तब उपयोगी होता है जब आप समान डेटा प्रकार और पैरामीटर जैसे प्रथम नाम, अंतिम नाम आदि का डेटा एकत्र करना चाहते हैं।
  • इसे बनाए रखना बहुत आसान है क्योंकि हम एक ही नाम का उपयोग करके पूरे रिकॉर्ड का प्रतिनिधित्व कर सकते हैं।
  • संरचना में, हम एकल पैरामीटर का उपयोग करके किसी भी फ़ंक्शन में रिकॉर्ड्स का पूरा सेट पास कर सकते हैं।
  • आप समान प्रकार के अधिक रिकॉर्ड संग्रहीत करने के लिए संरचना की एक सरणी का उपयोग कर सकते हैं।

संघ के लाभ

यूनियन का उपयोग करने के पक्ष/लाभ इस प्रकार हैं:

  • यह संरचना की तुलना में कम मेमोरी घेरता है।
  • जब आप यूनियन का उपयोग करते हैं, तो केवल अंतिम चर तक ही सीधे पहुँचा जा सकता है।
  • यूनियन का उपयोग तब किया जाता है जब आपको दो या अधिक डेटा सदस्यों के लिए एक ही मेमोरी स्थान का उपयोग करना होता है।
  • यह आपको केवल एक डेटा सदस्य का डेटा रखने में सक्षम बनाता है।
  • इसका आवंटित स्थान डेटा सदस्य के अधिकतम आकार के बराबर है।

संरचना के नुकसान

संरचना का उपयोग करने के कुछ नुकसान/कमियां इस प्रकार हैं:

  • यदि आईटी परियोजना की जटिलता सीमा से परे हो जाती है, तो उसका प्रबंधन कठिन हो जाता है।
  • कोड में एक डेटा संरचना में परिवर्तन के लिए कई अन्य स्थानों पर परिवर्तन की आवश्यकता होती है। इसलिए, परिवर्तनों को ट्रैक करना कठिन हो जाता है।
  • संरचना धीमी है क्योंकि इसमें सभी डेटा के लिए भंडारण स्थान की आवश्यकता होती है।
  • आप संरचना में एक समय में किसी भी सदस्य को पुनः प्राप्त कर सकते हैं, जबकि आप संघ में एक समय में एक सदस्य तक पहुंच सकते हैं।
  • संरचना आंतरिक पैरामीटरों में लिखे प्रत्येक सदस्य के लिए स्थान घेरती है, जबकि संघ आंतरिक पैरामीटरों में लिखे उच्चतम आकार वाले सदस्य के लिए स्थान घेरता है।
  • संरचना लचीली सरणी का समर्थन करती है। यूनियन लचीली सरणी का समर्थन नहीं करता है।

संघ के नुकसान

यहां, यूनियन का उपयोग करने के नुकसान/कमियां दी गई हैं:

  • आप एक समय में केवल एक ही यूनियन सदस्य का उपयोग कर सकते हैं।
  • सभी यूनियन चरों को एक समय में भिन्न मानों के साथ आरंभीकृत या उपयोग नहीं किया जा सकता।
  • यूनियन अपने सभी सदस्यों के लिए एक सामान्य भंडारण स्थान निर्धारित करता है।

प्रमुख अंतर:

  • संरचना के भीतर प्रत्येक सदस्य को एक विशिष्ट मेमोरी स्थान आवंटित किया जाता है, जबकि यूनियन में मेमोरी स्थान सभी डेटा सदस्यों द्वारा साझा किया जाता है।
  • एक डेटा सदस्य का मान बदलने से संरचना में अन्य डेटा सदस्यों पर कोई प्रभाव नहीं पड़ेगा, जबकि एक डेटा सदस्य का मान बदलने से संघ में अन्य डेटा सदस्यों का मान बदल जाएगा।
  • संरचना का उपयोग मुख्य रूप से विभिन्न डेटा प्रकारों को संग्रहीत करने के लिए किया जाता है, जबकि यूनियन का उपयोग मुख्य रूप से कई डेटा प्रकारों में से एक को संग्रहीत करने के लिए किया जाता है।
  • संरचना में, आप एक समय में किसी भी सदस्य को पुनः प्राप्त कर सकते हैं, जबकि दूसरी ओर संघ में, आप एक समय में एक सदस्य तक पहुँच सकते हैं।
  • संरचना लचीली सरणी का समर्थन करती है जबकि संघ लचीली सरणी का समर्थन नहीं करता है।

शुरुआती लोगों के लिए हमारा सी ट्यूटोरियल भी देखें:- यहाँ क्लिक करें