请在这里解释typedef的行为

时间:2013-01-29 11:55:17

标签: c structure typedef

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

1 个答案:

答案 0 :(得分:14)

读取typedef的方法是作为常规变量声明,变量的类型是给定别名的类型,变量名称是新别名的名称。

所以,在

typedef type1 type[10];

如果我们放弃typedef我们得到:

type1 type[10];

这明确将type定义为10 type1的数组。因此,typedef为类型“10 type数组”引入名称type1