はじめての C

構造体について 2

ポインタを 構造体に渡す、という参照方法は 多くの場面で 採り入れられています。

それは、大きすぎる 構造体の占めるスペースを 節約してくれますし、ときには、その実行速度を 上げることにもなります。

実際、多くの データ構造ライブラリでは、ノード作成型 - make_node type - の 関数を もつことに なるでしょうし、そこでは ポインタを メモリに 割り当てて - allocate - 返すか、または ポインタのポインタを使って 同様に メモリに 割り当てることになります。

struct Node *make_node(void)
{
struct Node new_node = malloc(sizeof*new_node);
/* Error check and set a default state */
return *new_node;
}

このような データ構造アルゴリズムの ロジックを 用いると、リンクリストや 2分木 - binary trees - を 容易に 実現できますし、また それ以上に、スパース行列 - sparse matrices - と skip list に対して はるかに 役立たせることが できるのです。

そのほかにも、構造体の配列を つくることができます。 その用法は ふつうの配列と 同じことになります。

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

struct Person people[] = {
{ "prelude", 25, 5.9f },
{ "Generic person", 20, 6.0f }
};

それぞれのメンバに アクセスするには、ドット演算子を 使う前に、配列に 添字を 用いてください。

printf("Name : %s\n", people[0].name);