Barninga Z
a- a+

Puntatori a puntatori

PUNTATORI 

Puntatori a puntatori 

Un puntatore è una variabile che contiene un indirizzo. Perciò è lecito (e, tutto sommato, abbastanza normale) fare uso di puntatori che puntano ad altri puntatori. La dichiarazione di un puntatore a puntatore si effettua così: 

char **pPtr;

In pratica occorre aggiungere un asterisco, in quanto siamo ad un secondo livello di indirezione: pPtr non punta direttamente ad un char; la sua indirezione *pPtr restituisce un altro puntatore a char, la cui indirezione, finalmente, restituisce il char agognato. Presentando i puntatori è stato analizzato il significato di alcune espressioni; in particolare si è detto che in **numPtr, ove numPtr è un puntatore a float, il primo "*" è ignorato: l'affermazione è corretta, perché pur essendo numPtr e pPtr entrambi puntatori, il secondo punta ad un altro puntatore, al quale può essere validamente applicato il primo dereference operator ("*"). 

L'ambito di utilizzo più frequente dei puntatori a puntatori è forse quello degli array di stringhe: dal momento che in C una stringa è di per sé un array (di char), gli array di stringhe sono gestiti come array di puntatori a char. A questo punto è chiaro che il nome dell'array (in C il nome di un array è anche puntatore all'array stesso) è un  puntatore a puntatori a char[22]. Pertanto, ad esempio, 

printf(pPtr[2]);

visualizza la stringa puntata dal terzo elemento di pPtr (con una semplificazione "umana" ma un po' pericolosa potremmo dire che viene visualizzata la terza stringa dell'array). 

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Staff
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!