使用言語が明記されてないからC言語の話として話を進めるな。 まず、 struct hoge{ int x; int y; }; こんな風に構造体を宣言すると、そのデータは 「struct hoge」というデータ型として定義される。 これ使って変数を定義するときは、 struct hoge hensuu; こんな感じになる。 んで、typedefの方は、 typedef int hoge; こんな風に宣言して、int型にhoge型という別名を付ける命令になる。 この二つを組み合わせると、 typedef struct hoge{ int x; int y; } hoge_t; こんな感じになって、「struct hoge」型のデータ型に「hoge_t」という別名を付けてあげることになる。 もうちょっと短縮して、 typedef struct{ int x; int y; } hoge_t;