構造体について

構造体

データの集合であることは構造体と変わりません。構造体の特徴としては、異なった型のデータをまとめて扱えるということです。たとえば名簿を作る際に、氏名はchar型の配列で作り、年齢はint型というように出来るのです。

  struct Meibo

  {

    int number; /* ID番号 */

    char name[51]; /* 氏名 */

    int age; /* 年齢 */

  };

 

構造体は、中身のデータの型を示さなくてはいけないため、基本的にはまず構造体の構成を定義します。上記では、Meiboという名前で構造体を作成しました。中身に関しては今までのように変数宣言と同じく定義します。中で定義されているものをメンバと呼びます。

  struct Meibo e;

実際に使う場合には変数宣言と同じく内部で使用するものは関数内で定義します。変数ではないために、「struct」と記述し、構造体の宣言であることを明示します。これで「e」は「Meibo」の構造体をもつことになります。

  e.number = 1;

  strcpy(e.name, "Hanako Yamada");

  e.age = 21;

実際に値を設定するには、このように「構造体.メンバ名」として変数と同じように値を設定することが可能です。strcpy()は、第2引数の文字列を第1引数にコピーする関数で、string.hに定義されているため、使用する場合にはインクルードする必要があります。構造体を単体で使用することも可能ですし、構造体自体を配列にして一覧管理のような使い方も出来ます。また、構造体を入れ子にすることもできるため、使用するデータの数や分類方法に応じて適宜使用してください。

  struct Meibo *e_ptr;

構造体にもポインタが使用でき、この場合は「e_ptr->number」というように「構造体のアドレス->メンバ名」とすることで値を参照できます。