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

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

Susan Sarandon
リリース: 2024-12-15 06:06:12
オリジナル
682 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート