Structures


C構造体は、内部に複数の名前付き変数を含む特別な大きな変数です。構造体は、構造体とクラスの基本的な基礎です。構造体は以下の目的で使用されます。

  • データのシリアライズ
  • 1つの引数を通じて関数の引数と出力
  • 関連リスト、二分木などのデータ構造

構造体の最も基本的な例は、です。点は、xとyという2つの変数を含む単一のエンティティです。点を定義しましょう。

struct point {
    int x;
    int y;
};

次に、新しい点を定義し、使用します。関数drawが点を受け取り、画面に点を描くと仮定します。構造体を使用せずに、使用するには、各座標用の2つの引数が必要です。

/* 10, 5 の位置に点を描く */
int x = 10;
int y = 5;
draw(x, y);

構造体を使用して、点を引数として渡すことができます。

/* 10, 5 の位置に点を描く */
struct point p;
p.x = 10;
p.y = 5;
draw(p);

点の変数にアクセスするには、ドット.演算子を使用します。

Typedefs

typedefを使用することで、型の別名を定義できます。これは構造体とポインタを扱う際に便利です。ここで私たちは、点構造体の長い定義をなんとかしたいと考えています。新しい点を定義するたびに、いちいちstructキーワードをつけなくても済むように、以下の構文を使用できます。

typedef struct {
    int x;
    int y;
} point;

これにより、新しい点を定義する際に、structキーワードが不要になります。

point p;

構造体は、ポインタを含むことができます。これにより、構造体は文字列を保持したり、他の構造体へのポインタを保持したりすることができます。つまり、これが構造体の本当の力です。例えば、以下の方法で乗り物構造体を定義できます。

typedef struct {
    char * brand;
    int model;
} vehicle;

ブランドは文字列を保持したり、他の構造体へのポインタを保持したりすることができます。つまり、これが構造体の本当の力です。例えば、以下の方法で乗り物構造体を定義できます。

vehicle mycar;
mycar.brand = "Ford";
mycar.model = 2007;

Exercise

新しい構造体を定義してください。構造体の名前は"person"で、nameという名前の文字列(charへのポインタ)と、ageという整数を含みます。


Copyright © learn-c.org. Read our Terms of Use and Privacy Policy