C 使用数组的typedef声明新类型

C 使用数组的typedef声明新类型,c,C,我知道如何使用typedef来定义新类型(标签) 例如,typedef unsigned char int8意味着您可以使用“int8”来声明unsigned char类型的变量 然而,我无法理解以下陈述的含义: typedef unsigned char array[10] 这是否意味着数组的类型为unsigned char[10] 在代码的其他部分中,此类型用作函数参数: int fct_foo(array* arr) 有人熟悉这句话吗?这是一种称为数组的数据类型,它是一个固定长度的数组

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

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

然而,我无法理解以下陈述的含义:

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

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

int fct_foo(array* arr)

有人熟悉这句话吗?

这是一种称为
数组的数据类型,它是一个固定长度的数组,大小为10个
无符号字符
对象

这是问如何做一个固定长度的数组,typedef格式的解释更深入

这是否意味着数组的类型是
无符号字符[10]

将“of”替换为“the”的另一个名称,您的语句100%正确。
typedef
为类型引入新名称

typedef unsigned char array[10];
声明
array
作为类型
无符号字符[10]
的另一个名称,数组为10
无符号字符

int fct_foo(array* arr)
says
fct\u foo
是一个函数,它将指向10个
无符号字符的数组的指针作为参数,并返回一个
int

如果没有
typedef
,它将被写为

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

您的
int8
记录了意图-您将存储小的数字,而不是一个字符。此外,通常约定是C99类型中声明的
uint8\u t
。这意味着在函数
fct\u foo
中,数组必须与
(*arr)[i]
一起使用,例如,获取数组中的
i
第个字符。@Daniel Fischer:如果上述函数声明为'int fct_foo(array arr'),参数类型会是什么?我在这里有点困惑。@Shivakumar与您声明它时一样
int-fct\u-foo(unsigned char arr[10])
,作为函数参数,数组类型被转换为指针类型,因此函数被有效地声明为
int-fct\u-foo(unsigned char*arr)
。这很好,尽管推断起来有点困难。
获取指向10个无符号字符数组的指针