我知道如何使用typedef来定义新类型(标签)。
例如,typedef unsigned char int8
表示您可以使用“int8”来声明unsigned char类型的变量。
但是,我无法理解以下陈述的含义:
typedef unsigned char array[10]
这是否意味着数组的类型为unsigned char [10]?
在代码的其他部分,此类型用作函数参数:
int fct_foo(array* arr)
有没有人熟悉这个陈述?
答案 0 :(得分:29)
这是否意味着数组的类型为
unsigned char[10]
?
将“”替换为“”“的另一个名称,并且您有 100%正确的声明。 typedef
为类型引入了新名称。
typedef unsigned char array[10];
将array
声明为unsigned char[10]
类型的另一个名称,数组为10 unsigned char
。
int fct_foo(array* arr)
说fct_foo
是一个函数,它将一个指向10 unsigned char
数组的指针作为参数并返回int
。
如果没有typedef
,则会将其写为
int fct_foo(unsigned char (*arr)[10])
答案 1 :(得分:4)
它的作用是使一个名为array
的数据类型是一个10 unsigned char
个对象的固定长度数组。
Here is a similar SO question正在询问如何进行固定长度数组,并且更深入地解释了typedef格式。