Esaminiamo le seguenti dichiarazione:
int var_x;
int* ptrX;
var_x = 6;
ptrX = &var_x;
*ptrX = 12;
printf("value of x : %d", var_x);
La prima linea induce il compilatore a riservare uno spazio nella memoria ad un numero intero. La seconda linea dice al compilatore di riservare lo spazio per immagazzinare un indicatore.
Un indicatore è una posizione di immagazzinaggio per un indirizzo. La terza linea dovrebbe ricordargli le dichiarazione dello scanf. L'indirizzo “&„ l'operatore dice al compilatore di andare al posto ch'ha memorizzato il var_x ed allora danno l'indirizzo della posizione di immagazzinaggio a ptrX.
L'asterisco * davanti una variabile dice al compilatore di dereference l'indicatore e vanno alla memoria. Allora potete fare le assegnazioni alla variabile immagazzinata a quella posizione. Potete riferire una variabile ed accedere ai relativi dati attraverso un indicatore. Vediamo un esempio degli indicatori:
/* illustration of pointer use */
#include <stdio.h>
int main()
{
int index, *pt1, *pt2;
index = 39; /* any numerical value */
pt1 = &index; /* the address of index */
pt2 = pt1;
printf("The value is %d %d %d\n", index, *pt1, *pt2);
*pt1 = 13; /* this changes the value of index */
printf("The value is %d %d %d\n", index, *pt1, *pt2);
return 0;
}
L'uscita del programma sarà visualizzata come segue:
The value is 39 39 39
The value is 13 13 13 |
|