Difference between the Call by Value and Call by Reference in C

The following table lists the differences between the call-by-value and call-by-reference methods of parameter passing.

Call By Value

Call By Reference

While calling a function, we pass the 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 the address of variables(location of variables) to the function known as “Call By References.
In this method, the value of each variable in the calling function is copied into corresponding dummy variables of the called function. In this method, the address of actual variables in the calling function is 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 access to the actual variables and hence we would be able to manipulate them.
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 passed by the Simple technique. Pointer variables are necessary to define to store the address values of variables.
This method is preferred when we have to pass some small values that should not change. This method is preferred when we have to pass a large amount of data to the function.
Call by value is considered safer as original data is preserved Call by reference is risky as it allows direct modification in original data

Note In C, we use pointers to achieve call-by-reference. In C++, we can either use pointers or references for pass-by-reference. In Java,  primitive types are passed as values and non-primitive types are always references.

Difference Between Call by Value and Call by Reference in C

Functions can be invoked in two ways: Call by Value or Call by Reference. These two ways are generally differentiated by the type of values passed to them as parameters.

The parameters passed to the function are called actual parameters whereas the parameters received by the function are called formal parameters.

Similar Reads

Call By Value in C

In call by value method of parameter passing, the values of actual parameters are copied to the function’s formal parameters....

Call by Reference in C

...

Difference between the Call by Value and Call by Reference in C

In call by reference method of parameter passing, the address of the actual parameters is passed to the function as the formal parameters. In C, we use pointers to achieve call-by-reference....

Conclusion

...