Pass by value is copy of the variable where any changes made to it apply only within the scope of that function.
Pass by reference is the address of the variable, which can be modified within a function and apply throughout the life of the variable
void passByValue(int n) // copy of a variable
{
n = 10; // change is local to this function only
}
void passByReference(int *n) // address of a variable
{
*n = 10; // changes variable through its address
// n is a pointer to an address
// *n derefences the pointer to change the
// value at that address
}
int main(void)
{
int x = 0;
passByValue(x); // pass a copy of x to the function
printf("passByValue: %d\n", x); // x should still be 0
passByReference(&x); // pass the address of x to the function
printf("passByReference: %d\n", x); // x should now be 10
...
}
Comments
Pass by value is copy of the variable where any changes made to it apply only within the scope of that function.
Pass by reference is the address of the variable, which can be modified within a function and apply throughout the life of the variable
HTH