这是什么类型的typedef?

时间:2019-07-18 16:05:12

标签: c typedef

这是示例代码

typedef int INT, *INTPTR, ONEDARR[10], TWODARR[10][10];

以上代码是什么意思? INTint的别名。其余的代码是怎么回事?

2 个答案:

答案 0 :(得分:8)

问题中的单行typedef是快捷方式

typedef int INT;
typedef int *INTPTR;
typedef int ONEDARR[10];
typedef int TWODARR[10][10];

然后INT是类型int的别名。
INTPTRint *类型的别名。
ONEDARRint [10]类型的别名。
TWODARR是类型int [10][10]的别名。

https://en.cppreference.com/w/c/language/typedef

答案 1 :(得分:0)

考虑以下声明

int INT, *INTPTR, ONEDARR[10], TWODARR[10][10];

它使用类型说明符int声明了四个变量:

scalar variable INT
pointer *INTPTR
one-dimensional array ONEDARR[10]
and two-dimensional array TWODARR[10][10]

然后使用typedef

typedef int INT, *INTPTR, ONEDARR[10], TWODARR[10][10];

然后,变量名称不是对象,而是具有变量的类型的别名(如果声明时没有typedef的话)。

所以INT表示类型intINTPTR表示类型int *ONEDARR表示类型int[10],而{{1 }}表示类型TWODARR

所以现在您可以选择是否以以下方式声明数组

int[10][10]

或使用别名为数组类型指定其类型

int a'10][10];

再考虑一个例子。

假设您有一个函数声明

TWODARR a;

其类型为int f( int x, int y ); 。现在,您要将此类型命名为使用较短的记录而不是较长的记录int( int, int )。然后,您可以使用像

这样的typedef
int( int, int )

因此,名称typedef int FUNC( int x, int y ); 现在表示类型FUNC