| 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 |