【C言語】enum型の変数を構造体に含める書き方

目次から探す

enum型を構造体に含める方法

C言語では、enum型を構造体に含めることができます。

enum型は、複数の定数をグループ化して扱うためのデータ型であり、構造体は複数の異なるデータ型をまとめて扱うためのデータ型です。

enum型を構造体に含めることで、関連するデータを一つの構造体で管理することができます。

enum型を構造体のメンバとして定義する方法

enum型を構造体のメンバとして定義する場合、まずenum型を定義し、その後に構造体を定義します。

以下に例を示します。

#include <stdio.h>
// enum型の定義
enum Weekday {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};
// 構造体の定義
struct Date {
    int year;
    int month;
    int day;
    enum Weekday weekday; // enum型をメンバとして含める
};
int main() {
    struct Date today;
    today.year = 2022;
    today.month = 1;
    today.day = 1;
    today.weekday = SATURDAY;
    printf("今日は%d年%d月%d日で、曜日は%dです。\n", today.year, today.month, today.day, today.weekday);
    return 0;
}

上記の例では、enum型Weekdayを構造体Dateのメンバとして含めています。

Date構造体のインスタンスtodayを作成し、そのメンバに値を代入しています。

最後に、printf関数を使ってtodayの値を表示しています。

enum型を構造体のポインタとして定義する方法

enum型を構造体のポインタとして定義する場合も、同様にenum型と構造体を定義します。

以下に例を示します。

#include <stdio.h>
// enum型の定義
enum Color {
    RED,
    GREEN,
    BLUE
};
// 構造体の定義
struct Rectangle {
    int width;
    int height;
    enum Color* color; // enum型のポインタをメンバとして含める
};
int main() {
    enum Color myColor = RED;
    struct Rectangle myRect;
    myRect.width = 10;
    myRect.height = 20;
    myRect.color = &myColor;
    printf("幅:%d、高さ:%d、色:%d\n", myRect.width, myRect.height, *myRect.color);
    return 0;
}

上記の例では、enum型Colorを構造体Rectangleのメンバとして含めています。

Rectangle構造体のインスタンスmyRectを作成し、そのメンバに値を代入しています。

colorメンバはenum型のポインタとして定義されており、myColorのアドレスを代入しています。

最後に、printf関数を使ってmyRectの値を表示しています。

以上が、C言語でenum型の変数を構造体に含める方法の解説です。

enum型を構造体に含めることで、関連するデータをまとめて管理することができます。

目次から探す