Call By Value |
Call By Reference |
While calling a function, we pass values of variables to it. Such functions are known as “Call By Values”. |
While calling a function, instead of passing the values of variables, we pass address of variables(location of variables) to the function known as “Call By References. |
In this method, the value of each variable in calling function is copied into corresponding dummy variables of the called function. |
In this method, the address of actual variables in the calling function are copied into the dummy variables of the called function. |
With this method, the changes made to the dummy variables in the called function have no effect on the values of actual variables in the calling function. |
With this method, using addresses we would have an access to the actual variables and hence we would be able to manipulate them. |
<pre>
// C program to illustrate
// call by value
#include
// Function Prototype
void swapx(int x, int y);
// Main function
int main()
{
int a = 10, b = 20;
// Pass by Values
swapx(a, b);
printf("a=%d b=%d\n", a, b);
return 0;
}
// Swap functions that swaps
// two values
void swapx(int x, int y)
{
int t;
t = x;
x = y;
y = t;
printf("x=%d y=%d\n", x, y);
}
Output:
x=20 y=10
a=10 b=20
</pre>
|
<pre>
// C program to illustrate
// Call by Reference
#include
// Function Prototype
void swapx(int*, int*);
// Main function
int main()
{
int a = 10, b = 20;
// Pass reference
swapx(&a, &b);
printf("a=%d b=%d\n", a, b);
return 0;
}
// Function to swap two variables
// by references
void swapx(int* x, int* y)
{
int t;
t = *x;
*x = *y;
*y = t;
printf("x=%d y=%d\n", *x, *y);
}
Output:
x=20 y=10
a=20 b=10
</pre>
|
Thus actual values of a and b remain unchanged even after exchanging the values of x and y. |
Thus actual values of a and b get changed after exchanging values of x and y. |
In call by values we cannot alter the values of actual variables through function calls. |
In call by reference we can alter the values of variables through function calls. |
Values of variables are passes by Simple technique. |
Pointer variables are necessary to define to store the address values of variables. |
Sia ? 3 years, 5 months ago
0Thank You