C call by value & call by reference क्या होते है?
Function in C
Call by value & Call by reference
एक program से एक C Function को कॉल करने के दो तरीके होते हैं।
1) Call by value
2) Call by reference
1) Call by value:-
1) value method द्वारा कॉल में, variable का value पैरामीटर के रूप में फ़ंक्शन को दिया जाता है।
2) actual parameter का value formal parameter द्वारा modified नहीं किया जा सकता है।
3) Different Memory actual और formal दोनों parameters के लिए allocated की जाती है। क्योंकि, actual parameter के value को formal parameter में कॉपी किया जाता है।
Note:
Actual parameter - यह argument है जो फ़ंक्शन कॉल में उपयोग किया जाता है।
Formal parameter - यह वह argument है जो function definition में उपयोग किया जाता है
Example program for C function (using call by value):
#include<stdio.h>
void change(int num) {
printf("Before adding value inside function num=%d \n",num);
num=num+100;
printf("After adding value inside function num=%d \n", num);
}
int main() {
int x=100;
printf("Before function call x=%d \n", x);
change(x);//passing value in function
printf("After function call x=%d \n", x);
return 0;
}
void change(int num) {
printf("Before adding value inside function num=%d \n",num);
num=num+100;
printf("After adding value inside function num=%d \n", num);
}
int main() {
int x=100;
printf("Before function call x=%d \n", x);
change(x);//passing value in function
printf("After function call x=%d \n", x);
return 0;
}
Output:
Before function call x=100
Before adding value inside function num=100
After adding value inside function num=200
After function call x=100
2) swaping:-
#include<stdio.h>
// function prototype, also called function declaration
void swap(int a, int b);
int main()
{
int m = 22, n = 44;
// calling swap function by value
printf(" values before swap m = %d \nand n = %d", m, n);
swap(m, n);
}
void swap(int a, int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
printf(" \nvalues after swap m = %d\n and n = %d", a, b);
}
// function prototype, also called function declaration
void swap(int a, int b);
int main()
{
int m = 22, n = 44;
// calling swap function by value
printf(" values before swap m = %d \nand n = %d", m, n);
swap(m, n);
}
void swap(int a, int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
printf(" \nvalues after swap m = %d\n and n = %d", a, b);
}
Output:
values before swap m = 22
and n = 44
values after swap m = 44
and n = 22
2) Call by reference:-
1) In call by reference method, variable का address parameter के रूप में फ़ंक्शन को दिया जाता है।
2) actual parameter के value को formal parameter द्वारा modified किया जा सकता है।
3) Same memory का उपयोग actual and formal दोनों parameters के लिए किया जाता है क्योंकि केवल address दोनों parameter द्वारा उपयोग किया जाता है।
Example program for C function (using call by reference):-
#include<stdio.h>
void change(int *num) {
printf("Before adding value inside function num=%d \n",*num);
(*num) += 100;
printf("After adding value inside function num=%d \n", *num);
}
int main() {
int x=100;
printf("Before function call x=%d \n", x);
change(&x);//passing reference in function
printf("After function call x=%d \n", x);
return 0;
}
void change(int *num) {
printf("Before adding value inside function num=%d \n",*num);
(*num) += 100;
printf("After adding value inside function num=%d \n", *num);
}
int main() {
int x=100;
printf("Before function call x=%d \n", x);
change(&x);//passing reference in function
printf("After function call x=%d \n", x);
return 0;
}
Output:
Before function call x=100
Before adding value inside function num=100
After adding value inside function num=200
After function call x=200
2) swaping using call by reference:-
#include<stdio.h>
// function prototype, also called function declaration
void swap(int *a, int *b);
int main()
{
int m = 22, n = 44;
// calling swap function by reference
printf("values before swap m = %d \n and n = %d",m,n);
swap(&m, &n);
}
void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
printf("\n values after swap a = %d \nand b = %d", *a, *b);
}
// function prototype, also called function declaration
void swap(int *a, int *b);
int main()
{
int m = 22, n = 44;
// calling swap function by reference
printf("values before swap m = %d \n and n = %d",m,n);
swap(&m, &n);
}
void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
printf("\n values after swap a = %d \nand b = %d", *a, *b);
}
Output:
values before swap m = 22
and n = 44
values after swap a = 44
and b = 22
Comments