In C, a function cannot change the value of an
argument that is passed by value. For a called function to modify a
value passed by the caller requires that the caller pass a pointer
to the value to be modified.
The pointer must be incremented by the number of
bytes read or written, but C does not allow a void pointer
to be incremented (since the compiler does not know the datatype
pointed to).