4
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];

ここで typeded の動作を説明してください。私が知っているのは、typedef の助けを借りてエイリアスを定義できるということだけです。

出力:3

4

1 に答える 1

14

読み方typedefは通常の変数宣言と同じです。変数の型はエイリアスが与えられている型であり、変数名は新しいエイリアスの名前です。

だから、

typedef type1 type[10];

をドロップすると、次のtypedefようになります。

type1 type[10];

typeこれは、 10 の配列であることを明確に定義していますtype1。そのため、タイプ「10 の配列」typedefの名前を導入しています。typetype1

于 2013-01-29T11:57:53.347 に答える