이 코드 비트가 있습니다.
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와 같이 모든 비트가 0을 의미하는 부동 소수점 표현을 사용하는 플랫폼에 대해서만 코딩하는 경우에만 작동합니다 . (나는이 있으리라 믿고있어 kiss_fft_scalar
입니다 float
제목에서 알 수 있듯이).
컴파일 타임에 크기가 알려지면 다음과 같이 작성할 수 있습니다.
kiss_fft_cpx spectrum[2024] = { 0 };
모든 값을 0
.
NB. malloc을 캐스트하지 마십시오 . 컴파일 시간에 크기가 정확히 알려지지 않았지만 작다고 알려져 있더라도 .NET을 작성하여 malloc / free를 피할 수있는 옵션이 kiss_fft_cpx spectrum[size];
있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다