我正在编写一个使用整数数组的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
。