gpt4 book ai didi

C 分配动态 double 组并使用 memset 初始化它

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

我知道这个问题非常基本,但即使在网上进行了长时间的搜索,我也找不到解决我的问题的方法。我想熟悉 C 语言中的动态数组,特别是使用 malloc() 进行分配和使用 memset() 进行初始化,所以这是我的代码:

#include <stdlib.h>

int main()
{
double *d;
int numElements = 3;
size_t size = numElements * sizeof(double);
d = malloc(size);
memset(d,1.0,size);

int i;
for(i=0; i < numElements; i++)
printf("%f\n",d[i]);

return 0;
}

但是我得到的输出与我期望的不同

0.0
0.0
0.0

请有人能温柔地解释一下我做错了什么吗?

谢谢!

最佳答案

因为 memset 使用字节

sizeof(double)==8,因此数组中的每个 double 值都填充有值 0x0101010101010101

只需将 memset 替换为:

for (int i=0;i< numElements;i++) d[i]=1;

关于C 分配动态 double 组并使用 memset 初始化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920843/

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