prof. Nunzio Brugaletta | Programmazione e linguaggio C |
Ricorre spesso, specie nelle elaborazioni che riguardano strutture dati dinamiche, così come si vedrà in seguito, la necessità di usare puntatori a strutture: per esempio per passare ad una funzione un riferimento ad una struttura.
Tali necessità sono così frequenti che il linguaggio C mette a disposizione uno speciale operatore: l’operatore -> (il trattino seguito dal simbolo di maggiore):
... typedef struct rec { /*1*/ char titolo[50]; char autore[20]; char editore[20]; float prezzo; }libro; ... void leggi(libro *pl); /*2*/ ... main(){ libro lib1; ... leggi(&lib1); /*3*/ ... } void leggi(libro *pl){ ... gets(pl->titolo); /*4*/ gets(pl->autore); /*4*/ ... }
Nella 1 si dichiara la struttura che ha visibilità globale.
La 2 mostra il prototipo di una funzione a cui viene passato un puntatore ad un dato di tipo libro.
Nella riga 3 si chiama la funzione leggi passando l’indirizzo di lib1, istanza della struttura libro.
Nelle 4 viene utilizzato l’operatore -> per accedere alle componenti della struttura. Una scrittura alternativa più lunga e, nel caso di strutture, poco usata sarebbe stata:
... gets((*pl).titolo); gets((*pl).autore); ...
http://ennebi.solira.org | ennebi@solira.org |