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



我有以下代码:

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?不循环所有数组?并保持它跨平台.

可移植:

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

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

如果在编译时知道大小,则可以编写:

kiss_fft_cpx spectrum[2024] = { 0 };

这将初始化所有值以0 .

铌。不要强制转换 malloc,即使大小在编译时并不确切知道但已知很小,您也可以选择通过编写 malloc/free 来避免 malloc/free kiss_fft_cpx spectrum[size];

相关内容

  • 没有找到相关文章

最新更新