If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
पिछले topics में हमें Parameterized Function के बार में पढ़ा , ये functions call by value type के functions थे , means function call करते समय हम जो value pass करते हैं , और जब function run होता है तो इन values का बाहरी scope से कुछ मतलब नहीं होता वो function में as a local variable treat किये जाते हैं।
Actually ! Calling के bases पर functions 2 categories में define किया गया है।
जैसा कि आपने ऊपर पढ़ा कि अभी तक हम जो functions define और use कर रहे थे ये Call By Value functions थे । जिसमे हम simply value को pass करते थे।
अगर आप function के अंदर उस value को manipulate भी करोगे तो उस variable की actual value ( जो कि function के बाहर है ) पर कोई फर्क नहीं पड़ता है।
#include <stdio.h>
// define a simple function.
void test(int number)
{
// change it's value , so that we can differentiate.
number += 10;
printf("Value inside function : %i \n", number);
}
int main() {
int number = 5;
printf("Value before function : %i \n", number);
// now call the function.
test(number);
printf("Value after function : %i \n", number);
return 0;
}
Value before function : 5 Value inside function : 15 Value after function : 5
Explain : Example में आप देख सकते हैं कि Function के अंदर value को manipulate किया गया है , but function call होने के बाद define किये गए external variable की value पर कोई असर नहीं पड़ा।
इस तरह के functions में function call करते समय arguments को ampersand (&) के साथ pass किया जाता है और function define करते समय parameter से पहले asterisk (*) का use करते हैं। Reference means variable content को different नाम के साथ access करना।
#include <stdio.h>
void test(int *number)
{
// change it's value , so that we can differentiate.
*number += 10;
printf("Value inside function : %i \n", *number);
}
// main function
int main() {
int number = 5;
printf("Value before function : %i \n", number);
// now call the function.
test(&number);
printf("Value after function : %i \n", number);
return 0;
}
Value before function : 5 Value inside function : 15 Value after function : 15
Explain :
Same Example में value की जगह variable से पहले value का reference (& ampersand) pass किया किया गया है , इसलिए function के अंदर value को modify करते ही उसकी actual value भी change हो गयी।
Call By Value और Call By Reference Functions में सबसे बड़ा difference भी यही है , Call By Value में हम सिर्फ value को accept करते हैं , इसलिए इस value को हम function के अंदर ही manipulate कर सकते हैं function के बाहर नहीं जबकि Call By Reference में हम function में value की जगह value का reference (जो कि * से access करते हैं ) use करते हैं।