WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

構造体

      2015/01/14

構造体について

構造体は、コーディングを行うプログラマ(人間)がデータを扱う構造を取り決めることのできる特別な型です。
具体的には、いろいろな種類のデータ型をひとまとめにして新しい型として定義することができます。

例えば、あるコードに人間の名前が格納されている name という配列と、人間の年齢が格納されている age という配列があると仮定します。
そのコードでは、”Kohta”という名前の人間は26歳であるというようにどの名前の人間が何歳かと関連を持たせて処理できると便利な場合があります。
このような場合に、nameとageをまとめて person という新しいデータ型(構造体)を作り出すことができます。

構造体の定義

具体的なコードを書いてみると、以下が構造体を使わないで人間の名前と年齢を出力する例です。

#include <stdio.h>

int main(void) {
    int i;
    char name[][20] = { "細江 希旨子", "五百木 彰子", "市塙 茂太郎", "有輝 忠彦", "岩田 芳延" };
    int age[] = { 55, 12, 14, 20, 7 };

    for (i = 0; i < 5; i++) {
        printf("%s, %d歳\n", name[i], age[i]);
    }

    return 0;
}

以下が、人間という構造体を定義してそれを利用する例です。

#include <stdio.h>

int main(void) {
    int i;
    struct person {
        char    name[20];
        int     age;
    };
    struct person person[] = {
        { "細江 希旨子", 55 },
        { "五百木 彰子", 12 },
        { "市塙 茂太郎", 14 },
        { "有輝 忠彦",   20 },
        { "岩田 芳延",    7 },
    };

    for (i = 0; i < 5; i++) {
        printf("%s, %d歳\n", person[i].name, person[i].age);
    }

    return 0;
}

結果は同じでも構造体を使ったほうが可読性が高いわかりやすいコードが書けます。
もちろんObjective-Cでも構造体は扱うことができます。

 - C言語 , ,