構造体
(ブログ記事の一覧は「こちら」)
「複数のデータ(変数)をまとめて、1つのかたまりにしたもの」を構造体と言います。 例えば「名前, 性別, 年齢」のデータをまとめたもののことを言います。
(Javaを学んだ方であれば、さほど難しく考える必要はなく、クラスの(関数を含まない)変数だけにしたものが構造体、であると言えます)
構造体を構成する要素を、構造体のメンバと呼びます。 上の例では、「名前」「性別」「年齢」がメンバにあたります。
構造体の書き方の例(その1)
定義
struct Person1 { char name[32]; int gender; int age; };
呼び出し方
struct Person1 person1;
構造体の書き方の例(その2)
定義
typedef struct Person2 { char name[32]; int gender; int age; } person_s;
呼び出し方
person_s person2;
呼び出し方(ポインタを用いた場合)
person_s *pPerson2; pPerson2 = (person_s *)malloc(1 * sizeof(person_s)); free(pPerson2);
サンプルプログラム
#include <stdio.h> #include <string.h> #include <stdlib.h> struct Person1 { char name[32]; int gender; int age; }; typedef struct Person2 { char name[32]; int gender; int age; } person_s; int main(void) { struct Person1 person1; person_s person2; person_s *pPerson2; strcpy(person1.name, "Tom"); person1.gender = 0; person1.age = 24; strcpy(person2.name, "John"); person2.gender = 0; person2.age = 28; pPerson2 = (person_s *)malloc(1 * sizeof(person_s)); strcpy(pPerson2->name, "Yoko"); pPerson2->gender = 1; pPerson2->age = 19; printf("%s %d %d\n", person1.name, person1.gender, person1.age); printf("%s %d %d\n", person2.name, person2.gender, person2.age); printf("%s %d %d\n", pPerson2->name, pPerson2->gender, pPerson2->age); free(pPerson2); return 0; }