要素よりも少ない初期化子で自動構造体または配列を初期化する場合、次で指定される動作を理解することが重要です。 C および C 標準。
C 標準では、自動変数の 2 種類の初期化 (完全な初期化と初期化なし) が定義されています。部分初期化は、要素またはメンバーのサブセットのみが初期化される状況を指す非標準用語です。
C99 標準
C99 では、自動配列と構造体の場合、要素よりも初期化子の数が少ない場合、残りの要素は静的ストレージ期間を持つオブジェクトと同じように暗黙的に初期化されます。これは、整数型の場合は 0 に初期化されることを意味します。
C 03 Standard
C では、自動配列および構造体の場合、初期化されていないメンバーは値で初期化されます。クラス型の場合、これはデフォルトのコンストラクターを呼び出すことを意味します。 int のような組み込み型の場合、ゼロ初期化を意味します。
C では、整数の自動配列を単一の値で初期化します。例:
int arr[10] = {123,};
C で指定されているように、最初の要素を 123 に初期化し、残りのすべての要素を 0 に初期化します。 standard.
ほとんどの主流コンパイラは、C および C 標準で指定されている部分初期化の規則に従います。ただし、異なるコンパイラ間の互換性を確保するには、すべての要素またはメンバーを明示的に初期化することをお勧めします。
以上が部分的に初期化された自動構造体と配列は C および C でどのように処理されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。