C言語においてtypedefを使うと構造体の宣言をスマートに書くことができます。
一方、C++でもtypedefは使えますが、構造体と一緒には使わないです。
typedefとは何かわかりやすく解説
typedefは自分で定義した型の宣言が短いコードで書けるようになる機能です。
C言語においてはよく構造体(struct)と一緒に使われます。
例としてpersonという名前の構造体を考えてみます。
構造体変数を宣言する際、通常なら「struct person 構造体変数名;」と書きますが、typedefを使って定義しておけば「person 構造体変数名;」のように短縮して書けます。
「struct」を書く必要がなくなっただけですが、何度も同じ構造体を呼び出す場合にはコードが見やすくなるというメリットがあります。
【C/C++】構造体(struct)におけるtypedefの使い方
typedefを使った定義方法
typedef struct 構造体名
{
メンバの宣言;
}新しい構造体名;
構造体名はなくてもOKです。
typedefを使った宣言方法
新しい構造体名 構造体変数名;
以下ではtypedefを使わない構造体person1と使う構造体person2をそれぞれ定義、宣言しています。
例1:
#include <stdio.h> struct person1 //typedefなし { int id; char name[30]; int age; }; typedef struct person2 //typedefあり { int id; char name[30]; int age; }Person2; void main() { struct person1 yamada1={1,"Yamada Takashi", 25}; //typedefなし Person2 yamada2={1,"Yamada Takashi", 25}; //typedefあり }
構造体定義時に書いた構造体名person2は省略可能です。
typedefを使った方が宣言が短いコードで書けています。
C++の構造体にtypedefは使わない
C++でも例1のような記述はできますが、実は構造体においてtypedefを使う必要はありません。
なぜならそもそも構造体変数の宣言時に「struct」を書く必要が無いからです。
例2:
#include <stdio.h> struct person { int id; char name[30]; int age; }; int main() { person yamada={1,"Yamada Takashi", 25}; //structなしでOK return 0; }
C++のコードではmain関数にvoid型が使えないので、int型にし、0を返しています。
C言語で行き詰まったら…
-
C言語・C++がわからない時に質問できるサイト・サービス5選
C言語を独学で勉強しているけど内容がイマイチわからない。もはや何がわからないのかもわからない。 C++のエラーが解決できない。ググってもわからない。わかる人に解説してほしい。 こんなお悩みにお答えしま ...
続きを見る