ホームページ >バックエンド開発 >C++ >C 構造体のメンバーはデフォルトでゼロに初期化されますか?

C 構造体のメンバーはデフォルトでゼロに初期化されますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-15 06:06:12682ブラウズ

Are C   Struct Members Initialized to Zero by Default?

C 構造体のメンバーはデフォルトで 0 に初期化されますか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。