如何将默认浮点值初始化为结构数组?

时间:2014-12-08 22:01:08

标签: 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);

如何将ri成员初始化为0? 没有循环所有数组?并保持跨平台。

1 个答案:

答案 0 :(得分:3)

便携地:

for ( size_t i = 0; i < 2024; ++i )
    spectrum[i].i = spectrum[i].r = 0;

其他人建议使用callocmemset;只有当你知道你只编写一个使用浮点表示的平台时,这些才会起作用,其中所有位零表示0.f,例如IEEE754。 (我假设kiss_fft_scalarfloat正如你的标题所暗示的那样。)

如果在编译时知道大小,那么你可以写:

kiss_fft_cpx spectrum[2024] = { 0 };

将所有值初始化为0

NB。 Don't cast malloc即使在编译时不确切知道大小但是已知它很小,您也可以通过编写kiss_fft_cpx spectrum[size];来避免malloc / free。