C 構造体の初期化されていないメンバーの値は 0 であることが保証されません。これらを明示的に初期化するにはメンバーの場合は、初期化リストを使用します:
struct Snapshot { double x; int y; }; Snapshot s = {0, 0}; // Explicitly initialize members to 0
または、次のこともできます。 {} 構文を使用して構造体を初期化します:
Snapshot s = {}; // Value initializes all members to 0
値の初期化に {} を使用すると、ネストされた構造体であっても再帰的に機能することに注意してください:
struct Parent { Snapshot s; }; Parent p = {}; // Value initializes both p and p.s to 0
構造体にコンストラクターがある場合は、これらのコンストラクターでメンバーを明示的に初期化する必要があります:
struct Snapshot { int x; double y; Snapshot(): x(0), y(0) { } // Initialize members in the constructor };
または、次のようにすることもできます。デフォルト値の初期化構文 x()、y() を使用して型を無視し、適切な初期値 (int の場合は 0、double の場合は 0.0 など) を割り当てます。
Snapshot(): x(), y() { } // Value initializes both x and y to 0
これは特に便利です。テンプレート用。
以上がC 構造体のメンバーはデフォルトでゼロに初期化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。