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

时间:2013-05-22 17:38:38

标签: c

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

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

但是,我无法理解以下陈述的含义:

typedef unsigned char array[10]

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

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

int fct_foo(array* arr)

有没有人熟悉这个陈述?

2 个答案:

答案 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格式。