- Quan definim punters a variables que són tuples, l'accés als camps de la tupla a través de l'apuntador es fa amb el nom de la variable apuntador seguit de '->' més el nom del camp. Això permet al C distingir entre l'accés a un camp d'una variable estructura (per la suma del desplaçament del camp a l'adreça de la variable) i l'accés a un camp d'una estructura referenciada per una variable apuntador (sumant el desplaçament del camp a l'adreça que conté la variable).
ex 3.10: Exemple on es veu l'accés als camps d'estructures referenciades per un apuntador del tipus corresponent:
typedef struct { char nom[50]; char autor[30]; int tipus; int pagines; }llibre; /*definició de l'estructura llibre */ void main(void) { int i,j; llibre a,*pa, *pb, biblio[500]; /* declació de variables, punters */ /* i vectors a estructures llibre */ pa = &a; pa->pagines = 176; strcpy(pa->nom,"El Perfum"); /* accés als camps d' a */ pa->autor[0] = 'P'; /* a través del punter pa */ pb = biblio; /* pb = adreça vector biblio */ pb[1]->tipus = 1; /* pb[1] és punter a l'element 1 de biblio */ (pb+2)->pagines = 120; /* (pb+2) és punter a l'element 2 de biblio */ for(i=0; i<500; i++, pb++) /* recòrrer el vector biblio amb el vector pb */ { pb->tipus = 1; if (pb->pagines == 0) { for(j=0; j<49; j++) pb->nom[j] = ' '; pb->nom[49] = '\0'; } } }
- Editeu el fitxer EXERCI_4.C i substituïu els interrogants per les instruccions que implementin el que es demana en els comentaris adjunts. El programa no dóna cap resultat, però cal entendre molt bé com funciona el tema dels punters per saber-lo fer.