में संदर्भ और कॉन्स्ट पॉइंटर्स हाल ही में जब मैं किसी के लिए पॉइंटर्स और संदर्भों (सी ++ प्रोग्रामिंग के संदर्भ में) के बीच मूल अंतर समझा रहा था, तो मैंने सामान्य स्पष्टीकरणों को बताया जो अलग-अलग फ़ंक्शन तर्कों के बारे में बात करते हैं - कॉल मूल्य, सूचक द्वारा कॉल करें, संदर्भ द्वारा कॉल करें, और संदर्भों के बारे में सभी संबंधित सिद्धांत।सी ++ संदर्भ और सी/सी ++
लेकिन फिर मैंने सोचा कि जो भी सी + संदर्भ तर्क गुजरने के संदर्भ में करता है, (बड़ी संरचनाओं/वस्तुओं को पारित करने के लिए एक मेमोरी कुशल तरीका देता है, उसी समय कैली को ऑब्जेक्ट के किसी भी चर को संशोधित करने की इजाजत नहीं देता है संदर्भ के रूप में पारित किया गया है, यदि हमारे डिजाइन की मांग है)
सी में एक कॉन्स पॉइंटर एक ही चीज़ प्राप्त करेगा, उदाहरण के लिए
func(int,int,(const struct mystr*)(ptr));
एक संदर्भ के बराबर किसी तरह का नहीं हो PTR जाएगा - एक पारित करने के लिए संरचना सूचक के रूप में निरंतर कास्टिंग द्वारा एक संरचना सूचक कहना struct mystr * ptr, की जरूरत है?
यह नहीं जिस तरह स्मृति कुशल संरचना (सूचक से गुजरती हैं), लेकिन यह भी सच है कि यह के रूप में पारित हो जाता है के कारण संरचना क्षेत्रों में कोई भी परिवर्तन की अनुमति न देने से सुरक्षित हो नकल नहीं द्वारा किया जाएगा में काम करेगा एक कॉन्स सूचक
सी ++ वस्तु संदर्भ में, हम C++ में स्थिरांक वस्तु सूचक के बजाय वस्तु संदर्भ ही कार्यक्षमता को प्राप्त के रूप में)
यदि हाँ, तो क्या उपयोग हालत में पास कर सकते हैं, संदर्भ की जरूरत है। संदर्भों और संबंधित दोषों के किसी भी विशिष्ट लाभ?
धन्यवाद।
-AD
@elusive: पॉइंटर्स संदर्भों से कम "प्रकार-सुरक्षित" कैसे हैं? – fredoverflow