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).