我有以下问题: 我需要初始化一个表示数字的stuct数字,为此需要包含它的值,除数和自身的除数。要存储除数,我需要使用指向整数数组的指针,这就是问题开始的地方。
typedef struct {
int value;
int divisor_amount;
int (*divisors)[];
} Number;
既然我事先并不知道我的号码拥有多少除数,我就无法给出数组的长度。
在main函数中,我为每个字段分配一个值。对于前两个变量,这没有问题。
Number six;
six.value = 6;
six.divisor_amount = 3;
现在对于指针我真的不知道如何初始化它。在课堂上,它被告知这样做:
six.divisors[0] = 1;
six.divisors[1] = 2;
six.divisors[2] = 3;
然后我从编译器中得到了这个错误:
[错误]无效使用带有未指定边界的数组
所以我想也许我需要分配一些空间并尝试:
six.divisors = malloc(six.divisor_amount*sizeof(int));
但这给了我另一个错误:
[警告]从不兼容的指针类型分配[启用 默认]
答案 0 :(得分:3)
int (*divisors)[];
错误,这是指向int
数组的指针。
使用
int *divisors;
使用此malloc
分配应该有效。