gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:40:04 24 4
gpt4 key购买 nike

我正在尝试编写一个代码,它将生成 100000 个 double 类型的随机数并将它们分配给一个数组。这应该在从 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));
}
}`

数组是指针吗?所以理论上我应该能够在 main 中使用该数组而无需再次声明它。但我收到错误:[错误]“randomNumberset”未在此范围内声明。

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

最佳答案

在给定的条件下求解是不可能的。

如果不能使用全局变量,那么要在函数中填充数组并从 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);
}
}

关于c - 在 C 中的单独函数中为数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com