मुझे संदर्भों में एक परेशानी है।फ़ंक्शन तर्क के रूप में संदर्भ?
void pseudo_increase(int a){a++;}
int main(){
int a = 0;
//..
pseudo_increase(a);
//..
}
यहाँ, चर a
का मूल्य एक क्लोन के रूप में वृद्धि नहीं होगी या इसे की प्रतिलिपि पारित कर दिया और नहीं कर रहा है चर ही: इस कोड पर विचार करें। - लेकिन क्यों
void true_increase(int& a){a++;}
int main(){
int a = 0;
//..
true_increase(a);
//..
}
यहाँ यह कहा जाता है a
के मूल्य में वृद्धि होगी:
अब हमें एक एक और उदाहरण पर विचार करते हैं?
जब true_increase(a)
कहा जाता है, a
की एक प्रति पारित की जाएगी। यह एक अलग चर होगा। इसलिए &a
a
के वास्तविक पते से अलग होगा। तो a
का मूल्य कैसे बढ़ता है?
मुझे सही करें जहां मैं गलत हूं।
आपको फ़ंक्शन तर्क के लिए अलग-अलग पहचानकर्ताओं का उपयोग करना चाहिए और चर को पारित किया जाना चाहिए ताकि आप स्वयं को और भी भ्रमित न करें। – AusCBloke
संदर्भ द्वारा उत्तीर्ण एक प्रतिलिपि नहीं बनाता है। यह एक ही चर के संदर्भ है। – jweyrich
मेरा सुझाव है कि आप पॉइंटर्स के बारे में पहले सीखें कि कैसे संदर्भ अनियमित वस्तुओं और अमान्य पॉइंटर्स आदि के दर्द को कम कर सकते हैं। अपनी पसंदीदा सी/सी ++ किताबों में से कोई भी चुनें! – sarat