C Function Call By Value And Call By Reference


पिछले 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 किया गया है।

  1. Call By Value
  2. Call By Reference

C Function Call By Value

जैसा कि आपने ऊपर पढ़ा कि अभी तक हम जो functions define और use कर रहे थे ये Call By Value functions थे । जिसमे हम simply value को pass करते थे।

अगर आप function के अंदर उस value को manipulate भी करोगे तो उस variable की actual value ( जो कि function के बाहर है ) पर कोई फर्क नहीं पड़ता है।

C Call By Value Example

CopyFullscreenClose FullscreenRun
#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;
}
Output
Value before function : 5 
Value inside function : 15 
Value after function : 5 

Explain : Example में आप देख सकते हैं कि Function के अंदर value को manipulate किया गया है , but function call होने के बाद define किये गए external variable की value पर कोई असर नहीं पड़ा।

C Function Call By Reference

इस तरह के functions में function call करते समय arguments को ampersand (&) के साथ pass किया जाता है और function define करते समय parameter से पहले asterisk (*) का use करते हैं। Reference means variable content को different नाम के साथ access करना।

C Call By Reference Example

CopyFullscreenClose FullscreenRun
#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;
}
Output
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 हो गयी।

C Difference Between Call By Value And Call By Reference

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 करते हैं।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook