Andrea Falla
17
08 Apr, 2022
Andrea Falla
17
08 Apr, 2022
Un puntatore è una variabile che rappresenta la locazione in memoria di un dato valore, tant'è che il contenuto di questo particolare genere di variabile è un indirizzo di memoria. Esso ci permette di muoverci in tutta libertà nella memoria, anche accedendo ad aree riservate, percui è importante prestare attenzione al suo utilizzo. L'operatore che contraddistingue variabili contenenti indirizzi è l'asterisco (*).
Come reso dall'esempio, l'operatore che permette di sfruttare l'indirizzo di una variabile è la e commerciale (&).
Al momento della dichiarazione del puntatore il tipo che gli assegnamo corrisponde al tipo di variabili che può puntare, questo perché in C ogni variabile occupa uno spazio di memoria differente. Grazie a questa proprietà dei puntatori possiamo applicare delle espressioni aritmetiche per spostarci in memoria, con alcune accortezze:
È bene spiegare alcune cose dell'esempio appena visto. Spostarsi di un elemento avanti in memoria, in un certo senso alla variabile successiva, richiede di muoversi in avanti di tanti byte, quanto è grande la variabile, tant'è che se abbiamo un vettore di int (come sopra) serve spostarsi di 4 byte, in caso di un vettore di float serve spostarsi di 8 byte, ecc... Per questo motivo, scrivere p = p + 1; incrementa l'indirizzo contenuto in p, ma non è detto che a quell'indirizzo sia già presente l'elemento successivo, come in una stringa, dunque è bene utilizzare questa espressione: p++; (interpretabile come vai all'elemento successivo).
Per operare sull'indirizzo contenuto nel puntatore è necessiario trattarlo come una comune variabile, mentre per operare sul contenuto della cella puntata dal puntatore serve utilizzare l'asterisco (*) davanti al nome della variabile:
Per chiudere, un puntatore è una variabile che contiene l'indirizzo di una cella di memoria e l'operatore che lo contraddistringue è l'asterisco. Ciò che serve per assegnare un indirizzo di una variabile al puntatore è l'operatore &, mentre per accedere al contenuto della cella puntata dal puntatore è necessario sempre l'asterisco. Funzionalmente molto più comodo, poiché semplifica la gestione di aree di memoria ampie senza necessitare di indici di posizione che occupano spazio e tempo di esecuzione.
Sono uno studente delle superiori. Ho approcciato l'informatica con la scuola, mentre la scrittura è una passione nata con il tempo.