Concetti di programmazione: puntatori

Diamo un’occhiata a come vengono utilizzati i puntatori nel linguaggio di programmazione C.

Ci occuperemo di due variabili:

aptr

Incontreremo anche due personaggi chiave:

- where
would return the address location of variable
- where
means follow the memory address stored in ptr and set that location to 8

Supponiamo che a si trova all’indirizzo 0x8130 in memoria e ptr a 0x8134; supponi inoltre che si tratti di una macchina a 32 bit tale che un int sia a 32 bit in dimensione. Quanto segue sarà in memoria dopo l’esecuzione del seguente frammento di codice:

int a = 5;int *ptr = NULL;

Indirizzo Contenuto
0x8130 0x00000005
0x8134 0x00000000

(Il puntatore NULL mostrato qui è 0x00000000.) Assegnando l’indirizzo di a a ptr:

 ptr = &a;

restituisce i seguenti valori di memoria:

Indirizzo Contenuto
0x8130 0x00000005
0x8134 0x00008130

Quindi, dereferenziando ptr codificando:

 *ptr = 8;

il computer prenderà il contenuto di ptr (che è 0x8130), “individuare” quell’indirizzo e assegnare 8 a quella posizione ottenendo la seguente memoria:

Indirizzo Contenuto
0x8130 0x00000008
0x8134 0x00008130

Chiaramente, l’accesso a a restituirà il valore 8 perché l’istruzione precedente ha modificato il contenuto di

tramite il puntatore ptr.

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *