सूचक बनाम संदर्भ: अंतर और तुलना

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

चाबी छीन लेना

  1. पॉइंटर्स वेरिएबल्स या ऑब्जेक्ट्स के मेमोरी एड्रेस को स्टोर करते हैं, जबकि संदर्भ मौजूदा वेरिएबल्स के लिए उपनाम के रूप में कार्य करते हैं।
  2. पॉइंटर्स को अलग-अलग मेमोरी पतों पर पुन: असाइन किया जा सकता है, जबकि संदर्भों को आरंभीकरण के बाद नहीं बदला जा सकता है।
  3. पॉइंटर्स को उनके द्वारा इंगित मूल्य तक पहुंचने के लिए स्पष्ट डीरेफ़रेंसिंग की आवश्यकता होती है, जबकि संदर्भों का उपयोग सीधे मूल चर की तरह किया जा सकता है।

सूचक बनाम संदर्भ

पॉइंटर एक वेरिएबल है जो एक अलग वेरिएबल का मेमोरी एड्रेस प्राप्त करता है, और इसे कितनी बार आवश्यक है इसके आधार पर प्रोग्राम में कई बार प्रारंभ किया जा सकता है। एक संदर्भ एक वैकल्पिक प्रोग्राम वैरिएबल है, और इसे पूरे प्रोग्राम में केवल एक बार आरंभ किया जा सकता है।

सूचक बनाम संदर्भ

पॉइंटर एक वेरिएबल है जिसमें किसी अन्य वेरिएबल का पता या स्थान उसके मान के रूप में होता है। इन्हें प्रोग्राम में कहीं भी '*' और '->' जैसे ऑपरेटरों के साथ आरंभ किया जा सकता है। एक पॉइंटर वेरिएबल को भी शून्य बनाया जा सकता है, और वे पुनः आरंभीकरण का भी समर्थन करते हैं। आधार डेटा प्रकार एक तारांकन चिह्न और सूचक के नाम के बाद सूचक घोषित करता है। 

एक संदर्भ पहले से ही सूक्ष्म कार्यक्रम चर के लिए दूसरे नाम वाला एक चर है। जैसे ही एक संदर्भ चर बनाया जाता है, उसे आरंभीकृत किया जाना चाहिए। यह दूसरे वेरिएबल का उपनाम बनाता है। & ऑपरेटर का उपयोग किया जाता है डिज़ाइन संदर्भ. वे आधार डेटा प्रकार के बाद '&' और वेरिएबल के नाम से बने होते हैं।

तुलना तालिका

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

सूचक क्या है?

संक्षेप में, पॉइंटर एक वेरिएबल है जो किसी प्रोग्राम में किसी अन्य वेरिएबल की मेमोरी लोकेशन या पता रखता है। C और C++ में पॉइंटर्स कार्यात्मक होते हैं। एक पॉइंटर वेरिएबल पॉइंटिंग वेरिएबल का पता स्थान संग्रहीत करता है। पॉइंटर वेरिएबल्स को घोषित किया जा सकता है और फिर उस वेरिएबल के साथ आरंभ किया जा सकता है जिसका पता निर्धारित किया जाना है।

यह भी पढ़ें:  क्यूटीपी बनाम लोडरनर: अंतर और तुलना

इसके अलावा, उनमें स्पष्टता है, क्योंकि एक पूर्णांक सूचक केवल पूर्णांक चर का पता ही रख सकता है। सूचकों के पास स्पष्ट घोषणा पद्धति होती है। उदाहरण के लिए, int *point, int प्रकार के एक वेरिएबल के लिए एक सूचक है, और डबल *ABC, डबल डेटा प्रकार के एक वेरिएबल के लिए एक सूचक है। यही अवधारणा अन्य डेटा प्रकारों पर भी लागू होती है। इसलिए, एक सूचक को निम्नलिखित तरीके से घोषित किया जाता है:

int *सूचक चर;

पॉइंटर की घोषणा के बाद, पॉइंटर वेरिएबल को उस वेरिएबल को सौंपा जाता है जिसका पता निर्धारित किया जाना है। उपरोक्त घोषणा कथन एक सूचक का उपयोग करता है जो पूर्णांक चर के मान को संग्रहीत करेगा। 

सूचक चर = &a;

यहां, प्रोग्राम के दूसरी तरफ उपयोग किया जाने वाला पूर्णांक वेरिएबल है जिसका पता एक वेरिएबल पॉइंटर में संग्रहीत होता है। संकेत भी देते हैं दायित्व पुनः आरंभ करने के लिए. उनके मूल्यों को उनकी आवश्यकता के अनुसार बदला जा सकता है। 

संदर्भ क्या है?

एक संदर्भ चर दूसरे चर के लिए एक उपनाम है। दूसरे शब्दों में, वह वेरिएबल जो किसी प्रोग्राम के अन्य मौजूदा वेरिएबल को संदर्भित करता है उसे संदर्भ वेरिएबल माना जाता है।

उनकी एक सीमा है कि उन्हें शून्य मान नहीं दिया जा सकता है, और उन्हें घोषित नहीं किया जा सकता है, उन्हें केवल आरंभीकृत किया जाता है। संदर्भ बनाने के बाद, वेरिएबल को संदर्भ नाम या उसके मूल नाम से एक्सेस किया जा सकता है। सन्दर्भों को सीधे आरंभीकृत किया जाता है। उदाहरण, 

int &ref = var;

यहां, रेफ संदर्भ चर का नाम है, और यह वेरिएबल var को इंगित करता है, जिसे प्रोग्राम के दूसरे भाग में प्रारंभ किया गया है। जब Ref और var का मान मुद्रित किया जाता है, तो Ref और var का मान समान पाया जाता है। पॉइंटर्स मेमोरी को सहेजने में फायदेमंद होते हैं क्योंकि जब उन्हें किसी फ़ंक्शन के तर्क के रूप में पारित किया जाता है, तो वे प्रत्येक फ़ंक्शन कॉल के लिए मूल मेमोरी स्थान का उपयोग करते हैं।

यह भी पढ़ें:  फ्रंटएंड बनाम बैकएंड: अंतर और तुलना

संदर्भ चर पुनः आरंभीकरण प्रदान नहीं करते हैं, और ये केवल एक बार आरंभ किए गए और अद्वितीय होते हैं। सन्दर्भ किसी वैरिएबल के पते को एक अलग मेमोरी स्थान में संग्रहीत करके उसे इंगित नहीं करते हैं। सीधे शब्दों में कहें तो, एक संदर्भ चर मौजूदा चर के लिए एक वैकल्पिक नाम है। ये वेरिएबल के दूसरे नाम में केवल उपनाम हैं जिन्हें संदर्भित किया जाना है।

सूचक और संदर्भ के बीच मुख्य अंतर

  1. एक सूचक चर को संदर्भ द्वारा बायपास संदर्भित किया जाता है, जबकि एक संदर्भ चर को मूल्य द्वारा बायपास संदर्भित किया जाता है।
  2. पॉइंटर्स अन्य पॉइंटर्स को इंगित करने की सुविधा का समर्थन करते हैं, जबकि संदर्भों में इस लाभ का अभाव है। एकाधिक चर को इंगित करने के लिए एक संदर्भ चर नहीं बनाया जा सकता है।
  3. सूचक उपयोग का समर्थन करते हैं अंकगणित ऑपरेटर और ऑपरेंड के रूप में कार्य करते हैं, जबकि संदर्भ चर अंकगणितीय संचालन के साथ संगत नहीं हो सकते हैं।
  4. पॉइंटर वेरिएबल का आकार और मेमोरी एड्रेस स्टैक पर होता है, जबकि एक रेफरेंस वेरिएबल में मूल वेरिएबल का मेमोरी एड्रेस होता है, लेकिन यह स्टैक पर थोड़ी सी जगह भी लेता है। 
  5. पॉइंटर्स में घोषणा के लाभ होते हैं, जबकि संदर्भ केवल आरंभीकृत होते हैं।
संदर्भ
  1. https://link.springer.com/article/10.1023/A:1015362608943
  2. https://dl.acm.org/doi/pdf/10.1145/99583.99599

अंतिम अद्यतन: 11 जून, 2023

बिंदु 1
एक अनुरोध?

मैंने आपको मूल्य प्रदान करने के लिए इस ब्लॉग पोस्ट को लिखने में बहुत मेहनत की है। यदि आप इसे सोशल मीडिया पर या अपने मित्रों/परिवार के साथ साझा करने पर विचार करते हैं, तो यह मेरे लिए बहुत उपयोगी होगा। साझा करना है ♥️

"सूचक बनाम संदर्भ: अंतर और तुलना" पर 12 विचार

  1. मैं संकेतकों और संदर्भों की विस्तृत व्याख्या की सराहना करता हूं। प्रोग्रामिंग सीखने वालों के लिए यह एक बेहतरीन संसाधन है।

    जवाब दें
  2. सी और सी++ में बुनियादी बातें हैं, लेकिन संकेतकों और संदर्भों को समझना महत्वपूर्ण है जो शुरुआती लोगों के लिए थोड़ा भ्रमित करने वाला हो सकता है।

    जवाब दें
  3. संकेतकों और संदर्भों को समझना आवश्यक है। यह आलेख इन अवधारणाओं की व्यापक समझ प्रदान करता है।

    जवाब दें
  4. C और C++ सबसे अधिक उपयोग की जाने वाली प्रोग्रामिंग भाषाएं हैं क्योंकि ये प्रोग्रामिंग दुनिया में शुरुआती लोगों के लिए बुनियादी दरवाजे हैं। संकेत और संदर्भ कुछ सबसे उपयोगी सुविधाएं हैं जो ये भाषाएं प्रदान करती हैं। पॉइंटर्स का उपयोग C और C++ में किया जाता है, और संदर्भ C++, Python और अन्य भाषाओं में समर्थित होते हैं।

    जवाब दें
  5. प्रोग्रामिंग में पॉइंटर्स और संदर्भ महत्वपूर्ण भूमिका निभाते हैं। उनके मतभेदों के बारे में जानकारी प्राप्त करना अच्छा है।

    जवाब दें

एक टिप्पणी छोड़ दो

क्या आप इस लेख को बाद के लिए सहेजना चाहते हैं? अपने लेख बॉक्स में सहेजने के लिए नीचे दाएं कोने में दिल पर क्लिक करें!