構造体と配列


構造体を配列にしたイメージ

 前回は構造体の概要について解説しました(前回の記事)。今回は構造体を配列にしてみようと思います。構造体を配列化することで沢山のデータを少ないコードで宣言することができます。下記資料が構造体を配列にしたイメージです。

 基本的には変数を配列にした時と同じイメージで、違いは配列化した変数の中にメンバー変数が入っていることです。続いて実際にコードを書いて動かして見ます。

コード

#include <stdio.h>
#define ARR_NUM 2

struct cat{
    char *name;  //名前
    int weight;  //体重
    int age;  //年齢
};
int main()
{
    struct cat cat[ARR_NUM];  //猫の配列

    cat[0].name="kyle";
    cat[0].weight=4;
    cat[0].age=12;

    cat[1].name="riri";
    cat[1].weight=6;
    cat[1].age=10;

    for(int i=0;i<ARR_NUM;i++)
    {
        printf("cat%d.name=%s\n",i,cat[i].name);
        printf("cat%d.weight=%d\n",i,cat[i].weight);
        printf("cat%d.age=%d\n",i,cat[i].age);
        printf("--------------------------------------\n");
    }

    return 0;
}
Option Explicit

Const ARR_MAX As Integer = 1

'構造体の宣言
Type cat
    name As String
    weight As Integer
    age As Integer
End Type

Sub testStruct()
    Dim cat(1) As cat   '構造体の作成
    Dim i As Integer
    
    'メンバー変数に代入
    cat(0).name = "kyle"
    cat(0).weight = 4
    cat(0).age = 12
    
    cat(1).name = "riri"
    cat(1).weight = 6
    cat(1).age = 10
    
    '出力
    For i = 0 To ARR_MAX
        Debug.Print ("cat" + CStr(i) + ".name=" + CStr(cat(i).name))
        Debug.Print ("cat" + CStr(i) + ".weight=" + CStr(cat(i).weight))
        Debug.Print ("cat" + CStr(i) + ".age=" + CStr(cat(i).age))
        Debug.Print ("----------------------------------------------")
    Next i
End Sub

コードを実行すると、
cat0.name=kyle
cat0.weight=4
cat0.age=12
cat1.name=riri
cat1.weight=6
cat1.age=10
上記のように出力したと思います。今回のテストコードのように2つ構造体であれば配列を使う必要はないかもしれませんが、100個の構造体を作りたい場合は配列にした方がコードを書く時間が短縮できて楽になります。
次回は実際にデータを入力する簡易ツールを構造体を使って作ってみます。


コメントを残す