int main()
{
int a;
typedef struct
{
int i;
int j;
}type1;
typedef type1 type[10]; //Please explain this line ?
typedef struct
{
int l;
type c;
}type2;
type2 x;
x.c[0].i=1; //How can we write this??
x.c[0].j=2;
x.c[2].j=3;
printf("%d",x.c[2].j);
return 0;
}
程序正在成功编译,我因为
而未预见到 typedef type1 type[10];
请解释这里打字的行为。我所知道的是我们可以在typedef的帮助下定义一个别名。
输出:3
答案 0 :(得分:14)
读取typedef
的方法是作为常规变量声明,变量的类型是给定别名的类型,变量名称是新别名的名称。
所以,在
typedef type1 type[10];
如果我们放弃typedef
我们得到:
type1 type[10];
这明确将type
定义为10 type1
的数组。因此,typedef
为类型“10 type
数组”引入名称type1
。