0

我有一个函数,它根据表查找返回一个不同长度的数组。我在函数内部为其分配所需的内存,但是如何从它的指针填充数组?编译器对我的两次尝试都抛出了相同的错误(注释行)。请帮忙!

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;
}
4

3 回答 3

1

使用数组表示法 - 因子[索引]。

于 2009-09-04T16:32:14.327 回答
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];
}

基本问题是您试图使用初始化常量的语法来初始化动态变量。

于 2009-09-04T16:31:34.437 回答
0
static const float[] initials = { .... };
factors = malloc(sizeof(initials));
memmove(factors,initials,sizeof(initials));
于 2009-09-04T16:36:52.087 回答