ホームページ > バックエンド開発 > C++ > C および C では構造体と配列の部分初期化はどのように機能しますか?

C および C では構造体と配列の部分初期化はどのように機能しますか?

Barbara Streisand
リリース: 2024-12-24 08:40:19
オリジナル
593 人が閲覧しました

How Does Partial Initialization of Structures and Arrays Work in C and C  ?

C および C での自動構造体と配列の部分初期化

部分初期化

C や C のような構造化プログラミング言語、初期化子を使用してデータ メンバーに値を割り当てることができます。オブジェクト宣言時。ただし、メンバーの数より少ない初期化子が提供される、以下のコード スニペットのケース 1 とは異なり、標準では 2 種類の初期化のみが定義されています。

struct someStruct {
    int a;
    int b;
    int c;
};

// Partial Initialization
struct someStruct s = {123,};
ログイン後にコピー
// Complete Initialization
struct someStruct s = {123, 456, 789};

// No Initialization
struct someStruct s;
ログイン後にコピー

部分初期化のルール配列と構造体の

実際には、状況を説明するために「部分初期化」という用語がよく使用されます。上記のケース 1 と同様に、初期化子はメンバーのサブセットのみに提供されます。 C と C 標準はどちらも部分初期化について明示的には言及していませんが、完全な初期化と初期化なしの両方の動作を定義しており、次のルールが部分初期化にも適用されます。

  • If an array or構造が部分的に初期化されると、ストレージの種類に関係なく、初期化されていない要素はすべてゼロ初期化されます。
  • この動作は C99 標準によって保証されています。 C の場合は (6.7.8.21)、C の場合は C 03 標準 (8.5.1 および 8.5)。

互換性の確保

さまざまな互換性を確保するためgcc/g を含むコンパイラでは、構造体と配列を初期化するときは、部分的な初期化を避け、標準ルールに従うことをお勧めします。予期しない動作につながる可能性があるため。

以上がC および C では構造体と配列の部分初期化はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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