allora:
un puntatore contiene semplicemente l'indirizzo di una variabile del suo stesso tipo!
Quando crei un puntatore ci poni davanti il carattere di deferimento ( * ) che serve ad indicare al compilatore che quello e' un puntatore!
un puntatore una volta creato nn punta a niente, e' necessario risolvere il riferimento !
Questo riferimento del puntatore va risolto o assegnandoli un indirizzo di una variabile del suo stesso tipo ( quindi con & ) oppure assegnando un puntatore che io chiamo dello stesso livello, diciamo dello stesso grado di deferimento....( detto cosi proprio rozzamente --> assegnando un puntatore con lo stesso numero di ( * ) ) !
ti faccio un esempio...
Codice PHP:
int *ptr, *punt; /*definisco due puntatori*/
int **super_ptr;/*puntatore di puntatore ad un intero*/
int uno=5;
/*a questo punto ho due puntatori un doppio puntatore ad intero ed un intero.
per far puntare un puntatore alla variabile "uno" gli assegno il suo indirizzo*/
ptr=&uno;
/*a questo punto ptr punta ad uno
- se stampi ptr senza l'operatore ( * ) troverai l'indirizzo contenuto in ptr
- se stampi *ptr inveci ottieni il contenuto della variabile puntata
- se stampi &(*ptr) ottieni l'indirizzo della variabile puntata
*/
/*
mettiamo il caso che tu voglia cambiare il valore della varibile uno indirettamente...poni semplicemente *ptr=valore;
*/
*ptr=50;
/*per far si che il secondo puntatore punti alla stessa cosa a cui punta il primo puoi farlo in due modi o procedi nuovamente con un operazione di assegnamento tramite & oppure un semplice assegnamento tra i due puntatori*/
punt=ptr;
/*in ultimo t mostro un altro esempio*/
super_ptr=&ptr;/*faccio puntatore super_ptr a ptr che a sua volta punta a uno*/
/*vediamo se hai capito
(nn compilarlo prova a ragionarci ! )
- se stampo *super_ptr ( con un solo * ) cosa ottengo a video???
- se lo stampo cosi **supe_ptr( con due)???
- e cosi super_ptr ???
- e cosi &super_ptr ???
*/
dai nn e' difficile. . . .
. . .spero di essere stato chiaro!