सूचक और संदर्भ के बीच अंतर; पॉइंटर बनाम संदर्भ
कुंजी अंतर - पॉइंटर बनाम संदर्भ
सूचक और संदर्भ के बीच अंतर पर चर्चा करने से पहले, हम पहले संक्षेप में इन दो शब्दों के अर्थ को देखते हैं। एक कार्यक्रम में, डेटा मेमोरी पर कब्जा। स्मृति का सटीक स्थान जिसमें निष्पादन समय में डेटा को रखा गया था, उन्हें एक्सेस करने के लिए जाना जाना चाहिए। पॉइंटर वैरिएबल्स और रेफरेंस वेरिएबल्स इन आंकड़ों तक पहुंचने के लिए उपयोग किया जाता है और उन मेमोरी पतों को हेर-फेर करता है जो वे हैं अर्थात्, ऑब्जेक्ट को अप्रत्यक्ष रूप से संदर्भित करने के लिए दोनों बिंदुओं और संदर्भों का इस्तेमाल किया जा सकता है। वे अनिवार्य रूप से मेमोरी पतों को उनके मूल्यों के रूप में रखते हैं एक संकेतक के बीच प्रमुख अंतर और एक संदर्भ यह है कि एक सूचक एक वेरिएबल है जो एक अन्य चर के स्मृति स्थान का पता भंडारित करता है जबकि एक संदर्भ एक चर है जो संदर्भ देता है दूसरे चर में दो तंत्र, संकेतक और संदर्भ में, अलग सिंटैक्स और उपयोग है
एक सूचक क्या है?एक सूचक
एक प्रोग्रामिंग भाषा ऑब्जेक्ट है जो कंप्यूटिंग मेमोरी में वैल्यू के मेमोरी एड्रेस को स्टोर करता है सी ++ वाक्यरचना में;
इंट आई = 5;
पूर्णांक * ptr = & i;
पहली पंक्ति 5 के मान के साथ शुरू की गई एक चर को परिभाषित करती है। दूसरी पंक्ति, चर की मेमोरी एड्रेस में एक पॉइंटर को परिभाषित करती है। यहां, 'पीटीआर' को एक वस्तु के रूप में घोषित किया जाता है, 'आइटर के लिए पॉइंटर' जिसका प्रारंभिक मान ऑब्जेक्ट का पता है I मूलतः ptr चर बिंदुओं को मैं अपनी स्मृति पते को संग्रहीत करके।
dereferencing है। * ऑपरेटर को निर्देशक के लिए डीरेफर करने के लिए उपयोग किया जाता है। घोषणाओं के बाद, अप्रत्यक्ष अभिव्यक्ति * ptr dereferences ptr को संदर्भित करने के लिए मैं। मैं के मूल्य को बदलने के लिए, निम्नलिखित असाइनमेंट का उपयोग किया जा सकता है;
* पीटीआर = 20;
अलग-अलग वस्तुओं को संदर्भित करने के लिए संकेतकों को फिर से सौंपा जा सकता है।
-3 ->
एअशक्त सूचक एक विशेष प्रकार का सूचक है एक अशक्त सूचक अक्सर 0 या शून्य द्वारा इंगित किया जाता है और कुछ भी नहीं इंगित करता है। सूचक को असाइन करने के लिए एक सटीक पता न होने के मामले में एक रिक्त सूचक का उपयोग करने के लिए यह अच्छा अभ्यास है यह काम तार्किक संचालन और शर्तों में इस्तेमाल किया जा सकता है। गतिमान रूप से आवंटित स्मृति
के पते को स्टोर और प्रबंधित करने के लिए पन्नेटर इस्तेमाल किया जा सकता है पॉकेटर्स के उपयोग के साथ ढेर, कतार और सूचियों जैसे डेटा संरचनाओं को कार्यान्वित और नियंत्रित किया जा सकता है उदाहरण के लिए, एक कतार में दो पॉइंटर्स हो सकते हैं; सिर सूचक और पूंछ सूचकपॉइंटर्स का उपयोग वेरिएबल्स को उनके पते से पास करने के लिए भी किया जा सकता है, जिससे मूल्य को परिवर्तित किया जा सकता है। पॉइंटर्स का उपयोग करके सीधे मेमोरी या मेमरी-मैप किए गए डिवाइसेज़ को हेरफेर किया जा सकता है संकेतक को संबोधित मेमोरी के लिए दोनों संरक्षित और असुरक्षित पहुंच की अनुमति है। इसलिए, यह सुनिश्चित करने के लिए जरूरी सावधानी बरती जानी चाहिए कि सूचक की सामग्री वैध है। अन्यथा, एक अमान्य मेमोरी एड्रेस के साथ एक पॉइंटर को डिफरेंस करने से प्रोग्राम को क्रैश हो सकता है।
संकेतक भाषाओं जैसे सी, सी ++, पास्कल और कई विधानसभा भाषाओं में समर्थित हैं।
सूचक
एक चर बी के साथ जुड़े स्मृति पते की ओर इशारा करते हुए संदर्भ क्या है?
एक संदर्भ बस एक
स्मृति में संग्रहीत मान के लिए वैकल्पिक पहचानकर्ता है यह एक प्रोग्राम को अप्रत्यक्ष रूप से किसी विशेष डेटाम तक पहुंचने में सक्षम बनाता है। सी ++ वाक्यरचना में;
इंट आई = 5;
अंतर और रेफरी =
i; पहली पंक्ति 5 के मान के साथ शुरू की गई एक चर को परिभाषित करती है। दूसरी पंक्ति 'रेफरी' को एक वस्तु के रूप में घोषित करती है जिसमें 'int के संदर्भ' होता है जो कि I को संदर्भित करता है। एक संदर्भ डेटा से अलग है, जो कि संदर्भ को स्मृति में संग्रहित विशेष डेटा के भौतिक पते के रूप में लागू किया जाता है।
परिभाषित होने के बाद, एक संदर्भ को नए मान को फिर से निर्दिष्ट नहीं किया जा सकता है। एक संदर्भ हमेशा उस ऑब्जेक्ट को संदर्भित करता है जिसके साथ इसे आरंभ किया जाता है। निम्नलिखित असाइनमेंट में, अभी भी संदर्भित करता है I, लेकिन मान अब 20 है।
रेफरी = 20;
उपर्युक्त उदाहरण के अनुसार, संदर्भों के संदर्भ में किसी ऑपरेटरों की आवश्यकता नहीं होती है।
संदर्भ तब इस्तेमाल किया जा सकता है जब कोई चर हमेशा किसी ऑब्जेक्ट को संदर्भित करता है। इसका कारण यह है कि, पॉइंटर्स के विपरीत, संदर्भ निरर्थक नहीं हो सकते हैं और हमेशा आरंभीकरण में असाइन किया जाना चाहिए। चूंकि संदर्भों में हमेशा किसी ऑब्जेक्ट को संदर्भित करना चाहिए, इस तरह के एक चर को बनाने के संदर्भ में यह सुनिश्चित करता है कि कार्यक्रम कुशलतापूर्वक और सही तरीके से काम करेगा। यह देखते हुए कि, कोई रिक्त संदर्भ नहीं हैं, एक संदर्भ चर की वैधता का परीक्षण नहीं करना है।
संदर्भ चर
प्रभावी ढंग से बड़े डेटा को प्रक्रियाओं के तर्क के रूप में पारित करने के लिए इस्तेमाल किया जा सकता है विभिन्न कोड क्षेत्रों के बीच बड़े डेटा को साझा करने में भी संदर्भ का उपयोग किया जाता है क्योंकि प्रत्येक कोड डेटा के संदर्भ में रहता है। प्रोग्रामिंग भाषाओं जैसे सी ++, जावा, पायथन, पर्ल, पीएचपी, रूबी, आदि समर्थन संदर्भ।
पॉइंटर और संदर्भ के बीच अंतर क्या है?
सूचक और संदर्भ की परिभाषा
पॉइंटर:
एक सूचक कंप्यूटिंग मेमोरी में संग्रहीत ऑब्जेक्ट का मेमोरी एड्रेस है। संदर्भ:
एक संदर्भ एक वस्तु के लिए एक वैकल्पिक पहचानकर्ता या उपनाम है सूचक और संदर्भ के लक्षण
घोषणा
सूचक:
एक संकेतक को * ऑपरेटर के साथ घोषित किया जाता है। संदर्भ:
ऑपरेटर के साथ एक संदर्भ घोषित किया गया है। Dereferencing
सूचक:
एक सूचक परिवर्तक को * ऑपरेटर को dereferenced होना आवश्यक है। संदर्भ:
एक संदर्भ चर में ऑपरेटर को dereferenced करने की आवश्यकता नहीं है। आरंभ
पॉइंटर:
सूचक को रिक्त करने के लिए आरंभ किया जा सकता है।ऐसे चर को शून्य पॉइंटर्स कहा जाता है संदर्भ:
संदर्भ को रिक्त नहीं किया जा सकता है। एक अशक्त संदर्भ के रूप में ऐसी कोई चीज नहीं है। एक संदर्भ हमेशा एक वस्तु को संदर्भित करना चाहिए। पुन: असाइनमेंट
पॉइंटर:
विभिन्न ऑब्जेक्ट के संदर्भ के लिए एक पॉइंटर वैरिएबल को पुन: असाइन किया जा सकता है। संदर्भ:
एक संदर्भ चर को फिर से निर्दिष्ट नहीं किया जा सकता। यह हमेशा उस ऑब्जेक्ट को संदर्भित करता है जिसके साथ इसे आरंभ किया गया था। उपयोग
पॉइंटर:
पॉइंटर वेरिएबल्स का उपयोग किया जाना चाहिए, जब किसी बात को संदर्भित करने की संभावना नहीं होती है या अलग-अलग समय पर अलग-अलग चीज़ों को संदर्भित करने की आवश्यकता होती है। संदर्भ:
संदर्भ चर का उपयोग किया जाना चाहिए, जब हमेशा संदर्भित करने के लिए कोई ऑब्जेक्ट होता है और उस ऑब्जेक्ट के अलावा अन्य किसी चीज़ को संदर्भित करने के लिए उस संदर्भ चर का उपयोग करने की आवश्यकता नहीं होती है। उपयोग के आवेदन
सूचक:
संकेतक एल्गोरिदम और डेटा संरचनाओं को लागू करने के लिए उपयोग किया जा सकता है। संदर्भ:
संदर्भ चर फ़ंक्शन पैरामीटर में उपयोग किया जा सकता है, और वापसी प्रकार उपयोगी इंटरफेस को परिभाषित करते हैं। प्रयुक्त भाषाएं:
पॉइंटर:
प्रोग्रामिंग भाषाओं जैसे सी, सी ++, पास्कल और कई असेंबली भाषाओं का समर्थन पॉइंटर्स संदर्भ:
प्रोग्रामिंग भाषाओं जैसे सी ++, जावा, पायथन, पर्ल, पीएचपी, रुबी, आदि समर्थन संदर्भ। छवि सौजन्य: यह फ़ाइल द्वारा "संकेतक" उपयोगकर्ता द्वारा किया गया था: SvenTranslation। स्वयं का कार्य। यह वेक्टर इमेज इंकस्केप से बनाया गया था। (सीसी बाय-एसए 3. 0) कॉमन्स के माध्यम से -