1

構造体型の配列を作成したいのですが、順番に定義されていません。たとえば、ランダムに実行できますarray[3] = mystruct_t; array[5] = mystruct_t(実行時にユーザー入力によって定義されます) 35私が試した:

それは「理想的」ですが、ヌルポインターを保持することはできません:

static struct mystruct_t foo_inputs[SIZE];

だから、私は試しました:

static struct mystruct_t *foo_inputs;

その後:

foo_inputs[x] = NULL;

しかし、私は警告を受け取ります:

 error: incompatible types when assigning to type ‘struct mystruct_t’ from type ‘void *’

それを実装するためのアイデア?

4

2 に答える 2

5

2つを組み合わせます。NULL最初に、非ポインタに割り当てることはできません(割り当てるべきではありません) 。2番目の例では、初期化されていないポインターが1つあります。必要なのは、ポインターの配列です。

static struct mystruct_t *foo_inputs[SIZE];
foo_inputs[x] = NULL;
于 2012-11-02T06:06:28.560 に答える
1
static struct mystruct_t *foo_inputs;

mystruct_tsへのポインタを宣言します。配列を指す各要素は単一の構造体である必要があるため、代わりにポインターを割り当てようとすると、コンパイラエラーが発生します。(メモリを割り当てなかったため、実行時に未定義の動作も発生します)。必要なのはダブルポインタです(メモリを適切に割り当てることを忘れないでください!)

static struct mystruct_t** foo_inputs;
于 2012-11-02T06:07:09.003 に答える