我正在编写一个使用整数数组的C程序,该数组是结构的一部分。结构为:

struct test
{
    int *ques;
    int a;
    int b;
    int len; // len is the length of the array defined in the structure as ques.

};


在此声明之后的函数中,我为len分配了一个值:

cases[0].len=5; // here cases is an array of the type struct test.


然后我使用malloc将内存分配给数组成员ques,如下所示:

cases[0].ques=(int *)malloc(cases[counter].len*sizeof(int));


之后,我尝试按如下所示填充数组ques

cases[0].ques[5]={-7,-6,-5,-4,-3};


并且在编译时,在上面的行中出现错误,指出:

maxmin.c(47) : error C2059: syntax error : '{'


你能帮我吗?

最佳答案

这是无效的:cases[0].ques[5]={-7,-6,-5,-4,-3};

仅在声明数组时,才可以用C初始化数组。

要在您的C程序中此时填充值,您应该使用for循环分别填充每个索引。

现在,C编译器将此语句解析为:

类型为5的结构数组ques的索引0处的数组cases的索引struct test的值为{-7,-6,-5,-4,-3},这肯定是无效的,因为在将值分配给变量时不能使用{

更新OP的评论:

您可以将所有值保留在temp数组中,例如int temp[50] = {...};,然后在为ques分配空间之后,可以使用memcpy函数将len个值的副本复制到ques

10-07 16:28