3
Cの方法はmemset()
です。これは、デフォルトではゴミで埋められていると考えられるためです。 C++では、= {0}
を0に初期化します。Dの構造体にゼロ初期化が必要ですか?
addrinfo hints;
memset (&hints, 0, sizeof (struct addrinfo));
ゼロ初期化のためのD方法は何ですか?
Cの方法はmemset()
です。これは、デフォルトではゴミで埋められていると考えられるためです。 C++では、= {0}
を0に初期化します。Dの構造体にゼロ初期化が必要ですか?
addrinfo hints;
memset (&hints, 0, sizeof (struct addrinfo));
ゼロ初期化のためのD方法は何ですか?
それ自動的に構造体の定義で=0
にそれらを設定しない限り、個々のフィールドに、NaN値に設定され、通常はゼロ(しかしchar
またはfloat
家族のために特にないされ、その内容、に基づいて初期化します)..
通常、D構造体を明示的に初期化する必要はありません。コンパイラは自動的にそれを行います。正しいことをしていない場合は、構造体定義自体に設定する必要があります。ただし、定義を変更できず、特にゼロが必要な場合でも、C memset
関数を使用することはできます。
foo f = void; // skip normal initialization
import core.stdc.string;
memset(&f, 0, f.sizeof); // set to 0 with memset