中括弧を使用した配列の初期化: コンパイラーの動作を明らかにする
プログラミングでは、array[100] = など、中括弧を使用して配列を代入します。 {0} では、値が内部でどのように初期化されるかについて疑問が生じます。この表記の背後にある魔法を詳しく見てみましょう。
マジックですか、コンパイラ ロジックですか?
一般的な認識に反して、魔法は関係しません。このコードの動作は、プログラミング言語仕様によって制御されます:
C 仕様 (セクション 6.7.8.21): 指定されていない配列要素の場合、ポインターは NULL に初期化され、算術型 (char を含む) ) はゼロに設定されます。
C 仕様 (セクション8.5.1.7): 未指定の配列要素は集約初期化されます。
C の空の初期化子リスト: C は、array[100] = {}; のような空の初期化子リストをサポートします。のすべての要素を集約初期化します。 array.
コンパイラ生成コード: 通常、コンパイラは、配列の各要素を指定された値に設定するコードを生成します。ただし、コンパイラと最適化設定によっては、コードが異なる場合があります。
コンパイラの動作の詳細については、関連する質問「配列 0 からの奇妙なアセンブリ」の空の初期化子リストに対して生成されたアセンブリ コードを参照してください。 -初期化。"
以上がC および C で中括弧を使用して配列はどのように初期化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。