For purely pointing at raw data and incrementing that pointer by the number of bytes a chunk of data occupies, I always use char *. I then recast the pointer to a relevant data structure pointer once I need to treat it as something specific. Incrementing a void * isn't portable among compilers.