C 如何初始化结构数组中的默认浮点值?

C 如何初始化结构数组中的默认浮点值?,c,struct,malloc,C,Struct,Malloc,我有一些代码: typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; kiss_fft_cpx* spectrum; spectrum = (kiss_fft_cpx*)malloc( sizeof(kiss_fft_cpx)* 2024); 如何将r和i成员初始化为0? 不循环所有数组?并保持其跨平台。便携: for ( size_t i = 0; i < 2024; ++i )

我有一些代码:

typedef struct {
    kiss_fft_scalar r;
    kiss_fft_scalar i;
}kiss_fft_cpx;

kiss_fft_cpx* spectrum;
spectrum = (kiss_fft_cpx*)malloc( sizeof(kiss_fft_cpx)* 2024);
如何将
r
i
成员初始化为0? 不循环所有数组?并保持其跨平台。

便携:

for ( size_t i = 0; i < 2024; ++i )
    spectrum[i].i = spectrum[i].r = 0;
将所有值初始化为
0


注意。即使编译时不知道大小,但知道大小很小,也可以通过编写
kiss_fft_cpx spectrum[size]来避免malloc/free

使用calloc而不是mallocase calloc而不是malloc?根据kiss_fft_标量类型,calloc字节0将映射到kiss_fft_标量0值(正常浮点和双精度都可以)。
calloc
或用零填充内存:
memset(频谱,0,大小(kiss_fft_cpx))
memset将是跨平台的?++,用于说明
malloc()
的返回类型以及VLA的建议。
kiss_fft_cpx spectrum[2024] = { 0 };