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

时间:2014-10-18 12:54:01

标签: c arrays pointers int ansi

我有以下问题: 我需要初始化一个表示数字的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));

但这给了我另一个错误:

  

[警告]从不兼容的指针类型分配[启用   默认]

1 个答案:

答案 0 :(得分:3)

int (*divisors)[];

错误,这是指向int数组的指针。

使用

int *divisors;

使用此malloc分配应该有效。