gpt4 book ai didi

c - 用随机数填充数组

转载 作者:行者123 更新时间:2023-11-30 14:22:25 33 4
gpt4 key购买 nike

目前我正在尝试用随机值填充大小为 num 的数组。为此,我需要创建两个函数:

1:编写一个函数 (*createdata),分配 num 个 double 值的动态数组,并将这些值初始化为 0.0。

2:编写一个不同函数(gendata),该函数将使用 rand() 函数生成的随机值填充 double 值数组。

这是我尝试编写函数如何运行的(在 main() 之外):

double *createdata(int num)
{
int i = 0;

double *ptr;

ptr = (double *)malloc(sizeof(double)*num);

if(ptr != NULL)
{
for(i = 0; i < num; i++)
{
ptr[i] = 0.0;
}
}
}

double gendata(int num)
{

createdata(num);

int j = 0;

for(j = 0; j < num; j++)
{
ptr[j] = rand();
}
}

但是,我知道上面的说法肯定有问题。

我想要的是,一旦我在 main 中调用了这两个函数,我将生成一个大小为 num 的数组,其中充满随机数。

最佳答案

您必须将分配的指针传递给 gendata 函数,因为在其当前形式中,ptr 是未知的。这甚至可以编译吗?

示例:

double *createdata(int num)
{
int i = 0;
double *ptr;

ptr = (double *)malloc(sizeof(double)*num);

if(ptr != NULL)
{
for(i = 0; i < num; i++)
{
ptr[i] = 0.0;
}
}
return ptr;
}

还有:

double gendata(int num)
{
double *ptr = createdata(num);
int j = 0;

if(ptr != NULL)
{
for(j = 0; j < num; j++)
{
ptr[j] = rand();
}
}
}

另请注意,我正在检查 malloc 是否再次返回 NULL

其他人可能会在这里说的其他提示:

  • Don't cast the return of malloc .
  • 在完全使用指针后,不要忘记释放指针。
  • 您的函数 gendata 中没有返回任何内容,但您将其声明为 double。如果您不打算返回任何内容,请使用 void

但无论如何,您可能都需要从中返回指针,以便稍后可以在其他函数中使用它,例如 main

编辑:因此,举个例子:

double *gendata(int num)
{
double *ptr = createdata(num);
int j = 0;

if(ptr != NULL)
{
for(j = 0; j < num; j++)
{
ptr[j] = rand();
}
}
return ptr;
}

在你的main中:

int main(void)
{
double *data;
data = gendata(100);
printf("%g\n", data[5]);

// When you're done, call free
free(data);
return 0;
}

关于c - 用随机数填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779980/

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