str पता (और इसलिए अंक) को एक शाब्दिक स्ट्रिंग, "हैलो" में संग्रहीत करता है, जो कहीं भी स्मृति के केवल पढ़ने वाले खंड में संग्रहीत होता है।
पीआरआर 'str' के समान पते पर इंगित करता है।
rptr मूल रूप से 'str' को इंगित करता है (स्ट्रॉ के समान पॉइंट पर नहीं, बल्कि स्वयं स्ट्रिंग के लिए)। संदर्भों के लिए 'पॉइंट टू' का उपयोग करना असामान्य हो सकता है लेकिन वे वास्तव में पॉइंटर्स की तरह बहुत अधिक हैं (इस मामले में एक पॉइंटर को पॉइंटर) थोड़ा सा वाक्य रचनात्मक अंतर और प्रतिबंध के अलावा कि वे उनके दौरान किसी अन्य पते को इंगित नहीं कर सकते जीवन काल।
यह अनुरूप होगा:
char** const rptr = &str;
एक संदर्भ की तरह, rptr ऊपर एक नया पता नहीं सौंपा जा सकता है (इसे बदल नहीं सकते हैं यह करने के लिए क्या इशारा कर रहा है), लेकिन यह अपने pointee बदलने के लिए मुक्त किया जा सकता है (जो इस मामले में 'str' के लिए एक सूचक होने के लिए होता है)।
*rptr = 0; // after this, str == 0
संदर्भ काफी केवल पढ़ने के लिए सूचक (नहीं केवल पढ़ने के लिए pointee करने के लिए एक परिवर्तनशील सूचक) केवल वे pointee (संदर्भित डाटा) पर पाने के लिए एक dereferencing ऑपरेटर की आवश्यकता नहीं है के रूप में ही कर रहे हैं:
char *str = "Hello";
char *&rptr = str;
rptr = 0; // after this, str == 0
सूचक को केवल-पढ़ने के सूचक के साथ ऊपर के उदाहरण से फर्क सिर्फ इतना है कि हम ऑपरेटर का उपयोग करने के लिए नहीं था * है।
कॉन्स संदर्भों में अस्थायी लोगों के जीवनकाल को बढ़ाने में सक्षम होने की अनूठी संपत्ति भी है, लेकिन यह शायद चर्चा के दायरे से बाहर है।
संभावित डुप्लीकेट: http://stackoverflow.com/questions/57483/difference-between-pointer-variable-and-reference-variable-in-c http://stackoverflow.com/questions/620604/difference- बीच-ए-पॉइंटर-एंड-रेफरेंस-पैरामीटर http: // stackoverflow।कॉम/प्रश्न/1 9 48467/के बारे में-सूचक-और-संदर्भ-वाक्यविन्यास और शायद अधिक ... – Alerty
ध्यान दें कि आपका कोड लगभग एक वर्ष में अमान्य हो गया है। लगभग दस वर्षों तक 'char *' का उपयोग करके स्ट्रिंग अक्षर को इंगित करने के लिए अप्रचलित किया गया है। –
@ जोहान्स - आपका मतलब मानक मानक स्ट्रिंग अक्षर की अनुमति नहीं देता है। अधिकांश किताबें अभी भी इस नोटेशन का उपयोग करती हैं। मेरे पास ऐसे विवरण का पूर्वावलोकन कहां हो सकता है? – Sam