我有以下代码:
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;
其他人建议使用calloc
或memset
;只有当你知道你只为一个使用浮点表示的平台编码时,这些才会起作用,其中所有位零表示0.f
,例如IEEE754。 (我假设kiss_fft_scalar
正如您的标题所暗示的那样float
)。
如果在编译时知道大小,则可以编写:
kiss_fft_cpx spectrum[2024] = { 0 };
这将初始化所有值以0
.
铌。不要强制转换 malloc,即使大小在编译时并不确切知道但已知很小,您也可以选择通过编写 malloc/free 来避免 malloc/free kiss_fft_cpx spectrum[size];
。