void *
)
in un puntatore di un altro tipo. Devi esplicitare l'operazione usando un operatore
di cast.
Esempio:
int *p_int; void *p_void; p_void = p_int; // Ok alla conversione implicita p_int = p_void; // Conversione implicita non permessa in C++ (in C sì) p_int = (int *)p_void; // Conversione esplicita -> OKQuesta regola ha un certo senso: un puntatore a
void
è fatto per puntare a
qualsiasi cosa, perciò puoi metterci qualsiasi valore (indirizzo) senza troppe storie.
Ma un puntatore ad int
per esempio è usato di solito solo puntare ad un
valore int
, perciò non puoi direttamente farlo puntare
a qualsiasi altro valore (che sarebbe visto come int, col risultato che l'intero
ottenuto dipende dall'implementazione - la cosa è di rara utilità).