はじめての C

しばらく C++ World の tutorial を 少しずつ 訳してみる。

構造体について

構造体は、互いに 関連している 異なった型の値を まとめて 扱うことのできる、都合のよい やり方 - convenient way - です。

struct Person {
char *name;
int age;
float height;
};

まず初めに - ちょうど ぼくらが おしゃべりを 始めるときのように - 構造体を 宣言します。 ただし ここでは 構造体の 値の宣言は 含まれていません。

なぜかというと、構造体は 名前を書き込む荷札 - tag - を 1つ もっていて、後から その構造体の 値を 宣言することが できるからです。

"struct" という キーワードで、"Person" が 構造体だということを、コンパイラに 知らせるよう 命じているのです。

構造体の値は (そこで コピーを 作ってやることで) 実際の構造体を 割り当てることにより、初期化することが できます。

struct Person {
char *name;
int age;
float height;
} Prelude = { "Prelude", 25, 5.9f };

struct Person Prelude = { "Prelude", 25, 5.9f };

同様に、同じ型の 構造体を返す 関数を 呼び出すことでも、初期化できます。

ポインタで 構造体に アクセスするときには、はじめに、ドット演算子を 使うことで、ポインタの示す先を 参照 - dereference - しないと いけません。

(*structure-name).member

このやり方は 使いにくくて みっともないし、すでに こき使われてる language に、さらに ムダな語句を 加えることにも なります。

そこで、ポインタのメンバに アクセスするのに、構造体を 一般的で 使いやすいものに するため、arrow operator という 操作が language に 追加されました。

structure-name->member