C में Parameters Passing क्या है और उसके प्रकारों को प्रोग्राम सहित जाने

What is Parameters Passing in C in Hindi-C में Parameter passing क्या है

C में Parameter passing, जब एक function को Call किया जाता है तब उस function को Data या Information Pass करने की प्रक्रिया को संदर्भित करता है ।

Parameters वास्तव में Variables होते है जिसका Use functions के बीच Values या References, Pass करने के लिए किया जाता है।

सरल शब्दों मे कहे तो functions के बीच Parameters को Pass करने की प्रक्रिया Parameter passing कहलाती है।

मान लीजिए function A, function B को Call कर रहा है तब function A "caller function" कहलायेगा और function B "called function या callee function" कहलायेगा

function A जो Arguments, function B को भेजेगा वह parameter "Actual parameter" होगा तथा function B का parameters, formal parameter होगा
 

Types of Parameters in C in Hindi

C में दो प्रकार के Parameters होते है।
1) Actual Parameters
2) Formal Parameters

Formal Parameter (Formal Argument)

Function Definition के समय Declare किया गया parameters Formal parameters कहलाते है

Example:
     void add_numers(int a, int b) 
      {
         int sum = a + b;
         printf("Sum of a nd b: %d\n", sum);
      }

ऊपर के example में `int a` और `int b` , add_numers function के formal parameters है 

Actual Parameter (Actual Argument)

जब function को Call किया जाता है तब उसे Pass किया गया arguments, Actual parameters कहलाते है वास्तव मे Actual Parameter ही actual values प्रदान करते है जिसे function द्वारा execution के समय Use किया जाता है

Example:
     int x = 3, y = 5;
     add_numbers(x, y);
   
ऊपर example में `x` और `y` Actual parameters है जिसे `add_numbers` function को Pass किया जाता है जब उसे Call किया जाता है 

Types of Passing methods in C in Hindi

C programming में हम arguments को functions को निम्न दो तरीके से Pass कर सकते हैं
1)pass by value 
2)pass by reference. 

Pass by Value

Pass by Value में Actual argument की Value कि एक Copy को function को Pass किया जाता है
यदि हमने function के अंदर के parameter मे कोई बदलाव लाते है तो यह बदलाव original argument को प्रभावित नही करता है

Pass by Value विधि छोटे आकार के Data types के लिए और जब आप नहीं चाहते कि function original Data को संशोधित करे, के लिए Use करना उचित है
Program call by value
#include<stdio.h>
void modifyValue(int num) 
   {
    num = 20; // we have changed the value of num 
   }
int main() 
{
    int num = 10;
    printf("Value before calling function : num = %d\n", num);

    modifyValue(num); // Calling the function 

    printf("Value after calling function : num = %d\n", num);
    return 0;
}
 
Output:
Value before calling function : num = 10
Value after calling function : num = 10

Explanation:
1) ऊपर के Program में हमारे पास एक function `modifyValue` नाम से है जिसका एक integer parameter `num` है

2)`modifyValue` function के अंदर हमने `num` parameter को एक नया Value `20` Assign किया है
हालाँकि, हमने जो नया Value दिया है यह function के लिए local है और `main` function में original variable `num` को प्रभावित नहीं करता है। 
अर्थात उसकी Value को Change नही करता है

3) `main` function में, हम `num` को `10` Value देकर Initialize करते हैं फिर हम पास by value के प्रभाव को देखने के लिए `modifyValue` function को Call करने से पहले और बाद में `num` का मान print करते हैं

4) जब `modifyValue` function को `num` argument के साथ Call किया जाता है, तो `num` के Value (10) की एक copy function को Pass की जाती है, न कि उसके original variable 'num' को 

अर्थात `modifyValue` function को 10 Value मिलता है न कि original variable 'num'

इसलिए, `modifyValue` function के अंदर `num` का मान बदलने से `main` function में original `num` variable प्रभावित नहीं होता है। 

5) अतः `modifyValue` के अंदर `num` में किया गया कोई भी संशोधन function के लिए स्थानीय है अतः Program का Output प्रदर्शित करता है कि modifyValue` को Call करने के बाद `num` अपरिवर्तित रहता है, अतः यह Pass by value के व्यवहार को प्रदर्शित करता है

Pass by Reference (Pointers)

Pass by Reference में actual argument के Memory Address(pointer) को function को Pass किया जाता है यह function के original data को सीधे ही Modify करने की अनुमति देता है

Pass by Reference विधि, बड़े आकार के Data types के लिए और जब आप चाहते कि function original Data को संशोधित करे, के लिए Use करना उचित है
 
Program call by reference
#include<stdio.h>
void modifyValue(int *num) 
      {
    *num = 20; 
       }
int main() 
{
    int num = 10;
    printf("Before calling function : num = %d\n", num);

    modifyValue(&num);

    printf("After calling function : num = %d\n", num);
    return 0;
}
 
Output:
Before calling function : num = 10
After calling function : num = 20

Explanation:
1) `modifyValue` function, में Use किया parameter एक integer pointer (`int *num`) 

2) `modifyValue` के अंदर, हम `num` का मान बदलने के लिए `*num` का उपयोग करके पॉइंटर को deference करते हैं

3) `main`, में `modifyValue` function को Call करके हम address-of operator (&) का Use करके num के address को `modifyValue`  Pass करते है 

4) इस तरीके से function सीधे 'main' मे pass by reference का Use करके original variable `num` को Modify कर सकता है

5) Program में Output यह प्रदर्शित करता है कि function को Call करने के बाद 'num' की Value को 20 मे Modified किया गया है 
अतः यह कार्य Pass by Reference में ही संभव है

Difference between Call by value and Call by reference in C in Hindi


1) Call by value में argument के value की एक Copy, function को Pass की जाती है

Call by reference में argument की memory address (reference) को function को Pass की जाती है

2) Call by value में function के बाहर original argument को modify नही किया जाता है

Call by reference में सीधे ही original argument को modify कर सकते है क्योंकि यह argument के memory address पर operate होता है 

3) Call by value में argument की copy को Store करने के लिए, अतिरिक्त memory space की आवश्यकता होती है 

Call by reference में argument का memory address Use किया जाता है जिससे memory space को बचाया जा सकता है

4) Call by value बड़े Data types या structure के लिए ज्यादा अच्छा नहीं है क्योंकि इसमें Data की Copy की जाती है

Call by reference बड़े Data types के लिए ज्यादा अच्छा है क्योंकि इसमें Data की Copy नही कि जाती बल्कि सीधे ही memory address पर कार्य किया जाता है 

5) C में Call by value, default parameter passing mechanism है

Call by reference में function parameters के लिए pointers को Use करने की जरुरत होती है जो स्पष्ट रूप से passing by reference को सूचित करता है

6) Call by value में function के अंदर parameter में कोई भी बदलाव original argument को प्रभावित नही करता

Call by reference मे parameter में हुए बदलाव का प्रभाव function के बाहर सीधे ही original argument पर पड़ता है 


 Related Post