C 構造体メンバーの初期化
C 構造体は、さまざまな型のデータをグループ化するユーザー定義型です。構造体メンバーのデフォルトの初期化に関して、よくある質問が生じます。自動的にデフォルトでゼロに初期化されますか?
デフォルトの初期化
C では、構造体のメンバーは デフォルトではゼロに初期化されません。これは、初期化されていない構造体のメンバーにガベージ値が含まれる可能性があることを意味します。これを回避するには、メンバーを目的の値に明示的に初期化する必要があります。
初期化オプション
構造体のメンバーを初期化するには、いくつかの方法があります。
struct Snapshot { double x; int y; }; Snapshot s = {0,0}; // Initializes x=0 and y=0
struct Snapshot { double x; int y; }; Snapshot s = {}; // Initializes x=0 and y=0
struct Snapshot { int x; double y; Snapshot():x(0),y(0) { } }; Snapshot s; // Initializes x=0 and y=0
再帰的初期化:
値の初期化は再帰的です。つまり、ネストされた構造体のメンバーも初期化されます。例:
struct Parent { Snapshot s; }; Parent p = {}; // Initializes p.s.x=0 and p.s.y=0
結論:
C 構造体のメンバーは、デフォルトでは 0 に初期化されません。未定義の動作を避けるために、上記のいずれかの方法を使用して明示的に初期化する必要があります。
以上がC 構造体のメンバーはどのように初期化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。