初始化一个指向整数数组的指针。

问题描述:

我有以下问题: 我需要初始化一个代表数字的stuct数字,因为它需要包含它的值,除数和除数本身。要存储除数,我需要使用一个指向整数数组的指针,这就是问题开始的地方。初始化一个指向整数数组的指针。

typedef struct { 
     int value; 
     int divisor_amount; 
     int (*divisors)[]; 
    } Number; 

现在既然我不提前知道我的数字有多少个因数我不能给一个数组长度。

在主函数中,我为这些字段中的每一个赋值。对于前两个变量,这是没有问题的。

Number six; 
six.value = 6; 
six.divisor_amount = 3; 

现在指针我不知道如何初始化它。上课时就被告知这样做,因为:

six.divisors[0] = 1; 
six.divisors[1] = 2; 
six.divisors[2] = 3; 

但后来我从编译器得到这个erroy:

[Error] invalid use of array with unspecified bounds

所以我想也许我需要分配一些空间和尝试:

six.divisors = malloc(six.divisor_amount*sizeof(int)); 

但是,这给了我又一个错误:

[Warning] assignment from incompatible pointer type [enabled by default]

+3

'int(* divisors)[];'可能不是你想要的。如果你想有一个指向数组的指针,只需在初始化 – UnholySheep 2014-10-18 12:56:28

+0

期间写入'int * divisors;'然后'malloc',我不能重现警告。由于'six.divisors'是一个(非函数)指针类型,这实际上应该可以工作。第一个片段的错误信息与'gcc -std = c99'相同,但是我没有得到第二个片段。你如何编译? – mafso 2014-10-18 17:10:26

+0

我使用devcpp与-Wpedantic打开。 – Actaeonis 2014-10-20 17:29:17

int (*divisors)[]; 

是错误的,这是一个指向的数组int

使用

int *divisors; 

与此您malloc分配应该工作。

+0

@mafso,对,纠正。 – 2014-10-18 15:20:41