我正在尝试编写一个代码,它将以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.
我觉得我应该在某个地方使用指针,但无法弄清楚在哪里。
答案 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);
}
}