मैं वर्तमान में सी ++ प्राइमर से सी ++ सीख रहा हूं, और यह बताता है कि संदर्भ किसी अन्य चर नाम के लिए उपनाम है। यह भी बताता है कि एक पॉइंटर दूसरे चर को कैसे इंगित करता है। यह बताता है कि एक सूचक और संदर्भ के बीच का अंतर यह है कि पॉइंटर्स को फिर से सौंप दिया जा सकता है और संदर्भ नहीं हो सकते हैं।एक कॉन्स पॉइंटर (कॉन्स के लिए पॉइंटर नहीं) और संदर्भ के बीच कार्यात्मक अंतर क्या है?
निम्नलिखित कोड उदाहरण में, मैं सूचक या संदर्भ के साथ क्या कर सकता हूं जिसे मैं दूसरे के साथ नहीं कर सकता?
double pi = 3.14;
double &piRef = pi;
double *const piPnt = π
//both of these examples are valid and do the same thing
piRef = 3.14159;
*piPnt = 3.14159;
//however, if I attempt to reassign what the pointer points to, it is illegal.
//this is the same as with a reference, as a reference can't be reassigned either
double tau = 6.28;
piPnt = τ
मुझे प्रत्येक के आंतरिक मतभेदों के बारे में पता है (जैसे कि एक सूचक एक वस्तु है, एक संदर्भ नहीं है)। मुझे दिलचस्पी है कि प्रोग्रामर को थोड़ा अलग वाक्यविन्यास से परे यह अंतर कैसे मायने रखता है। इस प्रकार, यह this प्रश्न का डुप्लिकेट नहीं है जिसमें स्वीकृत उत्तर केवल आंतरिक मतभेदों के बारे में बात करता है।
@juanchopanza मेरे उदाहरण में सूचक एक कॉन्स पॉइंटर है, इसलिए इसे फिर से असाइन नहीं किया जा सकता है। – john01dav
लेकिन आप संदर्भ पर असाइनमेंट का उपयोग कर सकते हैं। बस याद रखें कि यह किसी और चीज के लिए उपनाम है। – juanchopanza
@juanchopanza मैं सूचक पॉइंट के मूल्य को पुन: असाइन कर सकता हूं। उदाहरण के लिए, 'piRef = 3.14159' और '* piPnt = 3.14169' दोनों मान्य होंगे। एक पॉइंटर एक कॉन्स ऑब्जेक्ट को इंगित किए बिना स्थिर हो सकता है। – john01dav