使用typedef为数组声明一个新类型

我知道如何使用typedef来定义新类型(标签)。

例如, typedef unsigned char int8意味着您可以使用“int8”来声明unsigned char类型的变量。

但是,我无法理解以下声明的含义:

 typedef unsigned char array[10] 

这是否意味着数组的类型是unsigned char [10]?

在代码的其他部分,此类型用作函数参数:

 int fct_foo(array* arr) 

有没有人熟悉这个陈述?

这是否意味着数组的类型是unsigned char[10]

“of”替换为“ 另一个名称”,并且您有100%正确的声明typedef为类型引入了新名称。

 typedef unsigned char array[10]; 

声明arrayunsigned char[10]类型的另一个名称,10个unsigned char数组。

 int fct_foo(array* arr) 

fct_foo是一个函数,它将一个指向10个unsigned char数组的指针作为参数并返回一个int

没有typedef ,那就写成了

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

它的作用是使一个名为array的数据类型是一个固定长度的数组,其大小为10个unsigned char对象。

这是一个类似的SO问题 ,询问如何进行固定长度数组,并更深入地解释typedef格式。