" A définir un type de variable personnalisé "
Un nom de variable plutôt, en gros tu attribues des synonymes à un type pré-défini ou à un type défini par l'utilisateur.
Par exemple tu pourrait décider qu'au lieu d'écrire "int" pour définir un entier tu puisses écrire "Entier" :
typedef int Entier;
En fait typedef est souvent utilisé pour donner des noms plus explicites aux choses, par exemple si tu utilises un tableau de int à deux dimensions de 3 par 3 pour représenter une grille du jeu de morpions tu pourrais écrire :
typedef int Grille[3][3];
Puis ensuite écrire :
Grille grille;
Et tu aurais bien un tableau de int à deux dimensions, comme si tu avais écrit "int grille[3][3]".
Après en ce qui concerne les structures de données en C, on se sert souvent de typedef pour ne pas avoir a écrire "struct" tout le temps car en C lorsque l'on définit une structure de données, si on veut en créer une instance il faut toujours écrire :
struct MaStructure truc;
On peut éviter cela avec typedef en écrivant un truc du genre :
typedef struct MaStructure
{
//membres de la structure
} MaStructure;
En écruvant cela on dit que "MaStructure" est synonyme de "struct MaStructure", tout bêtement.
A noter qu'en C++ par défaut il n'y a pas besoin de réécrire "struct" à chaque fois donc le truc du typedef ne sert à rien.