Utiliser typedef pour un tableau pour déclarer un nouveau type

Je sais utiliser typedef pour définir un nouveau type (label).

Par exemple, typedef unsigned char int8 signifie que vous pouvez utiliser “int8” pour déclarer des variables de type unsigned char.

Cependant, je ne comprends pas le sens de la déclaration suivante:

 typedef unsigned char array[10] 

Est-ce que cela signifie que array est de type unsigned char [10]?

Dans une autre partie du code, ce type a été utilisé comme argument de fonction:

 int fct_foo(array* arr) 

Y at-il quelqu’un qui est au courant de cette déclaration?

Est-ce que cela signifie que array est de type unsigned char[10] ?

Remplacez “de” par “un autre nom pour le” et vous obtenez une déclaration correcte à 100% . Une typedef introduit un nouveau nom pour un type.

 typedef unsigned char array[10]; 

déclare un array sous un autre nom pour le type unsigned char[10] , un tableau de 10 caractères unsigned char .

 int fct_foo(array* arr) 

dit fct_foo est une fonction qui prend un pointeur sur un tableau de 10 caractères unsigned char en tant qu’argument et retourne un int .

Sans le typedef , cela serait écrit comme

 int fct_foo(unsigned char (*arr)[10]) 

Cela crée un type de données appelé array qui est un tableau de longueur fixe de 10 objects unsigned char .

Voici une question SO similaire qui demandait comment faire un tableau de longueur fixe et que le format typedef est expliqué plus en profondeur.