Puntatori nel linguaggio C

Nel linguaggio C i puntatori sono variabili che contengono gli indirizzi di memoria.

Per dichiarare un puntatore nel linguaggio C indico il tipo di dato (es. int, float, char) e il nome della variabile da assegnare al puntatore anticipato dal simbolo *

int *p;

Un esempio pratico

Ad esempio, assegno un valore alla variabile prova il valore 1.

Poi dichiaro un puntatore p e gli assegno l'indirizzo di memoria della variabile prova

int main() {
int prova=1;
int *p;
p = &prova;
printf("valore di a : %d \n " , prova);
printf("valore di *p : %p \n",p);
}

Se l'indirizzo di memoria è 0x7ffecb9ebfdc allora anche il contenuto del puntatore è 0x7ffecb9ebfdc.

valore di a: 1
valore di *p: 0x7ffecb9ebfdc

Ovviamente la variabile p si trova in un altro indirizzo di memoria. Ad esempio, in 0x7ffda82526d0.

Posso assegnare lo stesso indirizzo di memoria a più puntatori.

In questo caso si parla di puntatori multipli

int prova=1;
int *p;
int *q;
p = &prova;
q = &prova;

Come modificare il valore della variabile tramite i puntatori

Tramite il puntatore posso anche modificare il valore della variabile puntata usando la sintassi *p=valore

Ad esempio, riscrivo il programma om questo modo

int main() {
int prova=1;
int *p;
p = &prova;
*p=2;
printf("valore di a : %d \n " , prova);
}

Ora l'output del programma è due perché il puntatore ha cambiato il valore assegnato alla variabile prova tramite l'istruzione *p=2.

valore di a : 2

Posso anche incrementare (o decrementare) il valore della variabile puntata.

int main() {
int prova=1;
int *p;
p = &prova;
*p+=5;
printf("valore di a : %d \n " , prova);
}

Per quanto riguarda l'incremento unitario con i simboli ++ (oppure --) è necessario porre il puntatore *p tra parentesi

int main() {
int prova=1;
int *p;
p = &prova;
(*p)++;
printf("valore di a : %d \n " , prova);
}

Come azzerare il puntatore

Per eliminare il contenuto del puntatore

*p=NULL

Dove NULL è una costante contenuta nel modulo stdio.h

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Il linguaggio C

  1. Un esempio pratico
  2. Come compilare il programma

Impariamo a programmare

  1. Come dichiarare le variabili
  2. Gli operatori
  3. La libreria stdio.h
  4. Come visualizzare in output testo e variabili
  5. Come usare le stringhe
  6. L'istruzione IF
  7. Le strutture cicliche
  8. Le funzioni
  9. Gli array