नीचे सी प्रोग्राम में, मुझे समझ में नहीं आता कि क्यों मैं foo को कॉल करने के बाद buf [0] = 'ए' क्यों करता हूं। पास-दर-मूल्य कर नहीं कर रहा है?सी प्रोग्रामिंग - पास-बाय-रेफरेंस
#include <stdio.h>
#include <stdlib.h>
void foo(char buf[])
{
buf[0] = 'A';
}
int main(int argc, char *argv[])
{
char buf[10];
buf[0] = 'B';
printf("before foo | buf[0] = %c\n", buf[0]);
foo(buf);
printf("after foo | buf[0] = %c\n", buf[0]);
system("PAUSE");
return 0;
}
उत्पादन:
before foo | buf[0] = 'B'
after foo | buf[0] = 'A'
उत्तर के लिए, विशेष रूप से जेम्स, सभी के लिए धन्यवाद। कोई भी मूल्य के आधार पर कॉल का उपयोग क्यों करेगा यदि यह इनपुट के मूल्य को नहीं बदलेगा? –
क्योंकि आपको किसी चीज़ के मूल्य की आवश्यकता हो सकती है लेकिन इसे बदलने की आवश्यकता नहीं है। – Javier
@ केविन: क्योंकि फ़ंक्शन को केवल मूल्य की आवश्यकता हो सकती है। साइड इफेक्ट्स के बिना फ़ंक्शंस के बारे में तर्क करना आसान नहीं है (यह नहीं कि आप सी को कार्यात्मक प्रोग्रामिंग भाषा के रूप में बहुत दूर कर पाएंगे), और मूल्य से गुजरने से संभावित साइड इफेक्ट्स हटा दिए जाते हैं। –