1

我想创建一个我的结构类型的数组,但它不是按顺序定义的,例如,我可以随机执行array[3] = mystruct_t; array[5] = mystruct_t3并且5在运行时由用户输入定义)。我试过:

这是“理想的”,但不能保存空指针:

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

将两者结合起来。首先,您不能(不应该)分配NULL给非指针。在第二种情况下,您有一个未初始化的指针。你想要的是一个指针数组:

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 回答