We know that a pointer to a float data object is declared as
follows:
float* p;

Thus the formal definition of the swap function must be:

void swap ( float* p, float* q ) {
float tt;
tt = *p; // p is a pointer, *p is the value
*p = *q;
*q = tt;
}
To access the data object referenced by a pointer, use the
dereferencing operation *, as in

*p = *p + 1; adds 1 to the contents of p, as does
p[0] = p[0] + 1;
while
p[0] = p[1]; is the same as
*p = *(p + 1);
p is incremented by the size of the object.

But what about
*p = *(p++);
It is important to remember that a pointer is an address
of an object of a certain type. You must keep track of the
type_sizewhen you are manipulating addresses of objects,
and when manipulating the objects themselves.
|