/* Some pointer games. */
int fred(int *z)
int q = *z;
*z = 15;
int m = 5, n = 10;
int *ip, *ip2;
ip = &m;
ip2 = &n;
*ip = 77;
*ip2 = -485;
printf("A: %d %d\n", m, n);
*ip2 = *ip;
printf("B: %d %d\n", m, n);
ip2 = ip;
*ip = 100;
*ip2 = 200;
printf("C: %d %d\n", m, n);
m = fred(&n);
printf("D: %d %d\n", m, n);
Pointers in C are analogous to references in Java, but much
more powerful (and hence more confusing an error-prone).
The * is the dereference operator, which goes from
a pointer to the thing it points to.
The & is the address-of operator which creates a
pointer to other data.
The * is used in declarations to declare pointers.
It is the dereference operator only in expression.
This can be rather confusing.
The & is not used in declarations in C (though
C++ uses it to make things more confusing).
If you are in lecture, make sure your lazy
instructor gets off his duff and makes a picture of this.
It's the only way to make sense out of it.
If you're not in lecture, you might want to consider drawing
your own picture toward the same purpose.
Reading: pp. 48-49