我想创建一个结构类型的数组,但它没有按顺序定义,例如,随机我可以array[3] = mystruct_t;
array[5] = mystruct_t
(3
和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 *’
实施它的想法?
答案 0 :(得分:5)
将两者结合起来。在第一个中,您不能(不应该)将NULL
分配给非指针。在第二个,你有一个未初始化的指针。你想要的是一个指针数组:
static struct mystruct_t *foo_inputs[SIZE];
foo_inputs[x] = NULL;
答案 1 :(得分:1)
static struct mystruct_t *foo_inputs;
声明一个指向mystruct_ts的指针。指向数组的每个元素必须是单个结构,因此尝试分配指针会导致编译器错误。 (您还会在运行时获得未定义的行为,因为您没有分配任何内存)。你想要的是一个双指针(记得正确分配内存!)
static struct mystruct_t** foo_inputs;