Un puntatore e' una variabile che contiene un indirizzo di memoria, tale indirizzo deve essere l'indirizzo a partire dal quale e' memorizzato un dato.cmq un puntatore è una variabile che va a fare riferimento ad un'altra variabile,cioè:
Tramite il puntatore, quindi, e' possibile fare riferimento a tale dato in maniera indiretta, cioe' non si utilizza una variabile per memorizzare il dato, ma si utilizza una variabile per memorizzarne la locazione.
Per fare un esempio pratico pensa ad un double, poniamo che esso occupi 8 byte in memoria, tale double e' contenuto in una variabile dato.
Supponi ora di creare un puntatore punta_dato, in cui metti l'indirizzo del double.
Il risultato e' che dato e' una variabile che occupa 8 byte, a partire da un indirizzo X, e che contiene un numero in virgola mobile, mentre punta_dato e' una variabile che occupa 2 byte, e che contiene un numero esadecimale, cioe' l'indirizzo di dato. Chiaramente l'indirizzo di punta_dato e' diverso da quello di dato.
1) restituisce un puntatore a un numero intero. Questo vuol dire che in memoria viene scritto un numero intero, e la funzione restituisce una variabile che contiene l'indirizzo di tale intero.int *funzione();
int (*variabile)();
int **puntatore;
che cosa fanno??
2) Questa e' una definizione di tipo, significa che variabile e' un puntatore a una funzione, la quale restituisce un intero.
3) restituisce un puntatore a un puntatore: cioe' in memoria esiste un dato, esiste una variabile che contiene l'indirizzo di tale dato, e la funzione restituisce una variabile, che contiene l'indirizzo della variabile di cui sopra, contenente l'indirizzo del dato memorizzato.
Gli utilizzi dei puntatori sono molto vasti, consentono una grande flessibilita' nella manipolazione dei dati, pero' bisogna fare molta attenzione quando li si usa perche' si possono rischiare bug difficili da trovare.
So che l'argomento non e' semplice, spero di aver risposto a qualche dubbio.

Rispondi quotando