C,memset双数组失败

Goi*_*Way -3 c memset

我想double动态声明一个类型数组,所以这是我的代码

void function(int length, ...)
{
    ...

    double *a = malloc(sizeof(double) * length);
    memset(a, 1, sizeof(double) * length);
    for (int i = 0; i < length; i++)
    {
        printf("%f", a[i]);
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

当我通过length2,代码不会打印所有1.它只打印以下内容:

7.7486e-304
7.7486e-304
Run Code Online (Sandbox Code Playgroud)

那么,我该怎么做才能修复它?

ana*_*lyg 8

memset设置字节.你正试图设置双打.从刚才循环0length并设定每一个到1.0:

for (int i = 0; i < length; i ++)
{
    a[i] = 1; // or 1.0 if you want to be explicit
}
Run Code Online (Sandbox Code Playgroud)