About Lesson
As seen previously, arguments are passed to a function by value. There is no direct way for the function to alter a variable in the calling function. Let’s look at the swap function:
void swap(int a, int b)
{
a = a + b;
b = a - b;
a = a - b;
}
As a and b are copies of the actual argument passed to swap, the function only affects the copies and doesn’t actually swap the original variables.
We could re-write swap using pointers to fix this:
void swap(int *px, int *py)
{
*px = *px + *py;
*py = *px - *py;
*px = *px - *py;
}
We could call this swap and pass the addresses of the variables to be swapped like this:
swap(&x, &y);

Pointer arguments enable a function to access and change objects in the function that called it.