No creo que sea la diferencia, como verás, en el prototipo de memset tienes:
Por lo que tienes un puntero a void, lo cual se utiliza cuando no sabes el tipo de dato que se pasa por anticipado... Si haces un casting explícito, es castear el tipo de dato a un vacío lo que es válido igualmente con que no lo hagas.
Código [Seleccionar]
void * memset ( void * ptr, int value, size_t num );
Por lo que tienes un puntero a void, lo cual se utiliza cuando no sabes el tipo de dato que se pasa por anticipado... Si haces un casting explícito, es castear el tipo de dato a un vacío lo que es válido igualmente con que no lo hagas.