结构类型的2D数组是否可以像NULL指针一样?

时间:2012-11-02 06:04:23

标签: c struct

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

它是“理想的”,但不能保留空指针:

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 *’

实施它的想法?

2 个答案:

答案 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;