ポインタのリストを作成する必要があるとしましょう。このリストのメンバーはそれぞれ、タイプグループによってマップされたメモリチャンクを指します。
今、私は10個のアイテムを持っているとしましょう、
それで:
group *tmp = malloc(sizeof(group) * 10);
現在、tmpはこれらのチャンクの開始を指しています。
ここで、ポインターのリストを作成します。リスト内のすべての項目がチャンクを指します。
10個のポインタを作成しましょう。
group ** list = malloc(sizeof(group *) * 10)
次に、このポインタのリストを初期化します。
i = 10;
while(i--) {
list++ = &(tmp++);
}
これで、リストはチャンクへのポインターで初期化されます。1つの問題が残っています、あなたのリストは最後を指しています。あなたがそれを望まないなら
list-= 10;
ここで、リストから何かを取得したいとします。
while(i--) {
printf("%c\n", (*(list++))->a);
}
しかし、この種のリスト管理は奇妙であり、エラーが発生しやすいことは言うまでもありません。あなたは「リンクリスト」を通してあなたのリストを維持することを真剣に考えるべきです。あなたが与えたような些細なシナリオは、単一リンクリストを介して簡単に実装できます。