記事には広告を含む場合があります。

C言語入門講座

【C/C++】typedefとは?構造体(struct)での使い方

おゆ

組み込み系プログラマとして5年働いていた元エンジニアです。得意言語はC言語とC++。本サイトでは学生および新人組み込み系プログラマに向けてプログラミング知識をわかりやすく解説しています。

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++のエラーが解決できない。ググってもわからない。わかる人に解説してほしい。 こんなお悩みにお答えしま ...

続きを見る

ブログランキング参加中。クリックしてもらえると励みになります。

ブログランキング・にほんブログ村へ

-C言語入門講座