here से लिया गया उदाहरण।
मुख्य कोड:
#include <stdio.h>
int a;
int main() {
a = 3;
f(4, &a);
printf("%d\n", a);
return 0;
}
मान के आधार पर कॉल:।
f(int x, int &y){
// x will be 3 as passed argument
x += a;
// now a is added to x so x will be 6
// but now nothing is done with x anymore
a += 2*y;
// a is still 3 so the result is 11
}
मूल्य में पारित कर दिया और चर में पारित के मूल्य पर कोई प्रभाव नहीं है है
कॉल संदर्भ द्वारा:
f(int x, int &y){
// x will be 3 as passed argument
x += a;
// now a is added to x so x will be 6
// but because & is used x is the same as a
// meaning if you change x it will change a
a += 2*y;
// a is now 6 so the result is 14
}
संदर्भ पारित किया गया है। प्रभावी रूप से फ़ंक्शन में चर एक जैसा ही है।
कॉपी के साथ कॉल/पुनर्स्थापित करें:
int a;
void unsafe(int x) {
x= 2; //a is still 1
a= 0; //a is now 0
}//function ends so the value of x is now stored in a -> value of a is now 2
int main() {
a= 1;
unsafe(a); //when this ends the value of a will be 2
printf("%d\n", a); //prints 2
}
मूल्य में पारित हो जाता है और चर समारोह के अंत तक में पारित के मूल्य पर कोई प्रभाव नहीं है, जिस पर की अंतिम मूल्य बात है फ़ंक्शन वेरिएबल पास वैरिएबल में संग्रहीत है।
संदर्भ और प्रतिलिपि/पुनर्स्थापित द्वारा कॉल के बीच मूल अंतर यह है कि फ़ंक्शन वैरिएबल में किए गए परिवर्तन फ़ंक्शन के अंत के बाद पारित चर में दिखाई नहीं देंगे, जबकि संदर्भ परिवर्तनों के अनुसार कॉल तुरंत दिखाई देगा।
हालांकि मैं आपका जवाब स्वीकार करने में सक्षम था, मुझे बकाया पुरस्कार देने में सक्षम होने के लिए कुछ और घंटों तक इंतजार करना पड़ा। आपके महान उत्तर के लिए धन्यवाद और बक्षीस तुम्हारा है! – mort
आह, मुझे बक्षीस प्रणाली के बारे में पता नहीं था। जानकार अच्छा लगा! – mydogisbox