CIao.
Una domanda breve :
COsa sono di preciso i puntatori a void?
Non riesco a capire a cosa servono.
Grazie.
CIao.
Una domanda breve :
COsa sono di preciso i puntatori a void?
Non riesco a capire a cosa servono.
Grazie.
è il puntatore a quancosa di cui a priori non conosci il tipo.
Studiati prima il casting poi il concetto ti si chiarirà.
ciao
sergio
conosco il casting , non capisco l'utilità di un puntatore generico , non basta fare il casting col tipo preciso?
grazie ve mondobimbi
Due esempi: le funzioni malloc e free. malloc restituisce un void * perché ha allocato la memoria, ma non sa a cosa servirà; ci penserà il chiamante ad effettuare il cast al tipo di puntatore corretto. Stesso discorso per free: non è importante a che genere di dati punta il parametro passato, ma semplicemente l'indirizzo, visto che la funzione deve solo deallocare quel blocco di memoria.
Amaro C++, il gusto pieno dell'undefined behavior.
Un'altro esempio potrebbe essere un garbage collector, che tiene traccia di ogni allocazione, ma non sa, e non gli interessa, di che tipo sia. Oppure un interprete di comandi, a cui a ogni comando è associato un puntatore a funzione, il cui argomento è di tipo variabile a seconda del comando.
Oppure una funzione di lettura dati generica, tipo fread; o funzioni di gestione della memoria (memset, memmove, memcpy, memcmp), che operano su qualsiasi tipo di dato.
Insomma senza puntatori void, sarebbe più complicato e meno flessibile programmare