- Els tipus estructurats (tuples) en C es defineixen amb la paraula struct, seguida del nom del tipus i, entre claus, tots els camps de l'estructura, especificant primer el tipus i després el nom del camp (els tipus poden ser estructurats, és a dir, una estructura pot contenir camps que siguin a la seva vegada altres estructures o vectors, strings, matrius, ...). Per exemple:
struct llibre { char nom[50]; char autor[30]; int editorial; int tipus; int pagines; };
- Per definir variables estructurades dels tipus prèviament definits (usualment es defineixen abans del main), només s'ha d'indicar struct nom_tipus com a identificador de tipus per a aquella variable (o array). Per exemple:
void main(void) { int i,j; /* tipus elemental */ struct llibre a; /* variable estructurada de tipus llibre */ struct llibre biblio[500]; /* vector de 500 elements de tipus llibre */
- Per accedir a un camp d'una estructura, s'indica el nom de la variable seguida d'un punt, més el nom del camp. Cada camp es comporta igual que una variable del tipus del camp (l'estructura és un conjunt de subvariables). Per exemple:
a.pagines = 176; strcpy(a.autor,"Miguel Delibes"); biblio[i].tipus = 1; biblio[i].nom[j] = ' ';
- Una funcionalitat del C que resulta útil quan es defineixen tipus estructurats és la possibilitat d'afegir tipus definits pel programador (estructurats o no) als tipus elementals ja existents (char, int, ...). La sentència typedef permet fer-ho, indicant primer la composició del nou tipus i després el nom del nou tipus. Aquestes definicions es fan al principi del fitxer, i a la definició d'un tipus es poden referenciar altres tipus que s'hagin creat anteriorment. Per exemple:
typedef int enter; /* defineix el nou tipus enter a partir del tipus bàsic int */ typedef struct /* defineix la següent estructura com el nou tipus llibre */ { char nom[50]; char autor[30]; enter editorial; /* es fa servir el tipus predefinit enter */ enter pagines; }llibre;
- Una vegada s'han definit els nous tipus, es poden declarar variables d'aquests tipus tal com es fa amb els tipus bàsic. És a dir, nom del tipus seguit del nom de la variable. En el cas de les estructures, s'estalvia la duplicació de la paraula struct cada vegada que es vol referir a una determinada estructura. Per exemple:
void main(void) { enter i,j; llibre a; llibre biblio[500];