Lorsqu'on donne un nom à un type structure par typedef, l'utilisation est beaucoup plus aisée. En effet, si on déclare :
struct personne { ... }les déclarations de variables se feront par :
struct personne p1,p2;alors que si on déclare :
typedef struct { ... } PERSONNE;les déclarations de variables se feront par :
PERSONNE p1,p2;on voit que la seconde méthode permet d'éviter d'avoir à répéter struct.
De la même manière, en ce qui concerne les pointeurs, il est plus difficile d'écrire et de comprendre :
struct personne { ... }; struct personne *p1,*p2; /* p1 et p2 pointeurs vers des struct */que la version suivante qui donne un nom parlant au type pointeur vers struct :
typedef struct { ... } PERSONNE; /* P_PERSONNE type pointeur vers struct */ typedef PERSONNE *P_PERSONNE; /* p1 et p2 pointeurs vers des struct */ P_PERSONNE p1, p2;