INTRODUZIONE ALLA PROGRAMMAZIONE IN C



Puntatori e strutture



Si tratta di strutture abbastanza lineari e facilmente definibili. Consideriamo ad esempio: struct COORD {float x,y,z;}pt; struct COORD *pt_ptr; pt_ptr=&pt; /* assegna un puntatore a pt*/ L'operatore "->" permette l'accesso a un membro della struttura puntata dal puntatore, cioe': pt_ptr->x=1.0; pt_ptr->y=pt_ptr->y - 3.1; mentre avevamo visto che l'accesso ai membri di una struttra era dato dall'operatore "." , e cioe': pt.x=2.73; Un esempio puo' essere costituito dalle Linked Lists: typedef struct { int value; ELEMENT *next; } ELEMENT; ELEMENT n1, n2; n1.next = &n2; con cui viene rappresentato il link tra due nodi (n1 ed n2) della struttura ELEMENT; all'interno di ogni nodo di quest'ultima, oltre al valore c'e' un puntatore "next" che viene settato all'indirizzo del nodo successivo. E' importante notare che possiamo dichiarare "next" solo come un puntatore ad ELEMENT; non e' possibile avere "next" come elemento del tipo della variabile, poiche' questo creerebbe una definizione ricorsiva che non e' permessa. E' invece possibile settare una referenza del pointer poiche' vengono messi da parte 4 bytes per ogni puntatore. Nel prossimo capitolo verra' analizzato ulteriormente questo problema.