5.3. Pointers as Function Arguments
One of the best things about pointers is that they allow
functions to alter variables outside of there own scope. By passing a
pointer to a function you can allow that function to read
and write to the data stored in that variable.
Say you want to write a function that swaps the values of two
variables. Without pointers this would be practically impossible,
here's how you do it with pointers:
Example 5-2. swap_ints.c
#include <stdio.h>
int swap_ints(int *first_number, int *second_number);
int
main()
{
int a = 4, b = 7;
printf("pre-swap values are: a == %d, b == %d\n", a, b)
swap_ints(&a, &b);
printf("post-swap values are: a == %d, b == %d\n", a, b)
return 0;
}
int
swap_ints(int *first_number, int *second_number)
{
int temp;
/* temp = "what is pointed to by" first_number; etc... */
temp = *first_number;
*first_number = *second_number;
*second_number = temp;
return 0;
}
As you can see, the function declaration of
swap_ints() tells GCC to expect two pointers (address
of variables). Also, the
address-of operator
(
&) is used to pass the address of the two
variables rather than their values.
swap_ints()
then reads