C 使用数组的typedef声明新类型
我知道如何使用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 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)
saysfct\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个无符号字符数组的指针