14

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

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

但是,我无法理解以下语句的含义:

typedef unsigned char array[10]

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

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

int fct_foo(array* arr)

有没有人熟悉这个说法?

4

2 回答 2

32

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

“of”替换为“another name for the”,您就有了100% 正确的陈述。Atypedef为类型引入了一个新名称。

typedef unsigned char array[10];

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

int fct_foo(array* arr)

sayfct_foo是一个函数,它接受一个指向 10 数组的指针unsigned char作为参数并返回一个int.

如果没有typedef,那将写为

int fct_foo(unsigned char (*arr)[10])
于 2013-05-22T17:45:54.807 回答
4

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

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

于 2013-05-22T17:44:53.690 回答