我有一个函数,它根据表查找返回不同长度的数组。我在函数内部为malloc所需的内存,但是如何从指针中填充数组呢? 编译器为我的两次尝试(注释行)抛出相同的错误。请帮忙!
int lookup(const char *name, float *factors) {
int length;
if(!strcmp(name, "foo")) {
length = 6;
factors = malloc(length * sizeof(float));
// *factors = {0, -0.9, -4.9, -8, -7.8, -23.9};
// factors = {0, -0.9, -4.9, -8, -7.8, -23.9};
}
else if(!strcmp(name, "bar"))
{
length = 4;
factors = malloc(length * sizeof(float));
// *factors = {0, -3, -6, -9};
}
// .......................
// more else if branches
// .......................
else // error: name not found in table
{
factors = NULL;
fprintf(stderr, "name not found in table!!\n");
return 0;
}
return length;
}
答案 0 :(得分:1)
使用数组表示法 - 因子[index]。
答案 1 :(得分:0)
因为我直接用C编码了一段时间,所以原谅小错误,但试试
const float[] initialValue = {0, -0.9, -4.9, -8, -7.8, -23.9};
for (int i=0; i<length; i++)
{
factors[i] = initialValue[i];
}
基本问题是您尝试使用语法初始化常量来初始化动态变量。
答案 2 :(得分:0)
static const float[] initials = { .... };
factors = malloc(sizeof(initials));
memmove(factors,initials,sizeof(initials));