在C中的单独函数中为数组赋值

时间:2014-12-02 20:18:30

标签: c arrays function

我正在尝试编写一个代码,它将以double类型生成100000个随机数,并将它们分配给一个数组。这应该在一个单独的函数中完成,从main调用,我也不能使用任何全局变量。该函数的格式应为double createRandomNumbers()。但是,创建的数组也可以从main函数中使用。我已经为我的函数double createRandomNumbers()编写了下面的代码。

` int main(void)
    createRandomNumbers();
    printf("%.2f",randomNumberset[1]);
    return(0); `


`    double createRandomNumbers()
{   
    double randomNumberset[100000] ;int i;
    for(i=0;i<100000;i++)
    {
        randomNumberset[i]=(double)(10000*((float)rand()/(float)RAND_MAX));
    }
}`

数组是指针吗?所以理论上我应该能够在主要数据中使用数组而不再声明它。但我得到错误: [Error] 'randomNumberset' was not declared in this scope.

我觉得我应该在某个地方使用指针,但无法弄清楚在哪里。

1 个答案:

答案 0 :(得分:3)

无法在给定条件下解决问题。

如果你不能使用全局变量,那么要在函数中填充数组并从main中使用它,你必须做以下两件事之一:(1)在main中分配数组,并将它传递给函数来填充,或(2)在填充函数中分配数组并将其返回到main。没有其他选项,声明double createRandomNumbers()的函数也没有。对于选项1,它应该是void createRandomNumbers(double *buf);对于选项2,它应该是double * createRandomNumbers()

就个人而言,我会做这样的事情:

#include <stdio.h>
#include <time.h>

double *randomArray(int count) {
    double *dp = malloc(count * sizeof(double));
    if (dp) {
        for (int i = 0; i < count; i += 1) {
            dp[i] = ((double)rand()) / RAND_MAX;
        }
    }
    return dp;
}

int main(int ac, char *av[]) {
    srand(time(0));

    double *dp = randomArray(100000);
    if (dp) {
        . . .
        free(dp);
    }
}