Usando typedef para una matriz para declarar un nuevo tipo

Sé cómo usar typedef para definir un nuevo tipo (etiqueta).

Por ejemplo, typedef unsigned char int8 significa que puede usar “int8” para declarar variables de tipo unsigned char.

Sin embargo, no puedo entender el significado de la siguiente statement:

 typedef unsigned char array[10] 

¿Eso significa que la matriz es de tipo unsigned char [10]?

En otra parte del código, este tipo se usó como un argumento de función:

 int fct_foo(array* arr) 

¿Hay alguien que esté familiarizado con esta statement?

¿Eso significa que la matriz es de tipo unsigned char[10] ?

Reemplace “de” con “otro nombre para el” y tendrá una statement correcta al 100% . Un typedef introduce un nuevo nombre para un tipo.

 typedef unsigned char array[10]; 

declara la array como otro nombre para el tipo unsigned char[10] , matriz de 10 unsigned char .

 int fct_foo(array* arr) 

dice que fct_foo es una función que lleva un puntero a una matriz de 10 caracteres unsigned char como argumento y devuelve un int .

Sin el typedef , eso sería escrito como

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

Lo que hace es que crea un tipo de datos llamado array que es un array de longitud fija de 10 objetos unsigned char en tamaño.

Aquí hay una pregunta de SO similar que preguntaba cómo hacer una matriz de longitud fija y que el formato typedef se explica con mayor profundidad.