पाठ 22 / 36
पॉइंटर और फंक्शन
वेरिएबल का एड्रेस पास करें ताकि फंक्शन असली को बदल सके।
C हमेशा pass-by-value है
फंक्शन आर्गुमेंट हमेशा कॉपी होते हैं। किसी फंक्शन को कॉलर का वेरिएबल बदलने देने के लिए, मान की जगह उसका पॉइंटर पास करें — इसी तरह C "pass by reference" जैसा व्यवहार सिमुलेट करता है।
पॉइंटर से swap
&a और &b पास करने से swap सीधे कॉलर की मेमोरी तक पहुँच पाता है।
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main(void) {
int a = 1, b = 2;
swap(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
Output:
2 1
त्वरित जाँच: पॉइंटर के बिना `swap(int x, int y)` कॉलर के वेरिएबल swap करने में क्यों नाकाम रहता है?
- x और y मूल की कॉपी हैं
- C swap करने की अनुमति नहीं देता
- कंपाइलर इसे हटा देता है
Answer
x और y मूल की कॉपी हैं — पॉइंटर के बिना, फंक्शन केवल अपनी लोकल कॉपी को swap करता है।