8

C 言語で書かれたプログラムのロード データ部分では、バッファの初期化が次のように行われていることがわかります。

char buffer[100] = {0, };

しかし、このステートメントによってどの値が割り当てられているかはわかりません。いくつかのアイデアを共有してください。

これはコンパイラに依存していますか、それとも言語機能ですか?

そして、このステートメントが次と同等である場合、そのゼロの後にコンマを使用するポイントは何ですか:

char buffer[100] = {0};

コーダーは最初の要素がゼロであることを確認したいだけで、残りの要素は気にしないためでしょうか?

4

4 に答える 4

6

指定された値 (0この場合は単一) が使用され、他のすべてのメンバーはゼロで埋められます。

あなたが言ったchar buffer[100] = {1, };場合、配列には 1 と 99 個のゼロが含まれます。

于 2013-04-22T07:53:17.160 に答える
4

buffer[100] = {literal, }最初の要素をリテラル値に初期化し、残りを に初期化します。0一方、buffer[100] = {0}すべての要素を に初期化します0。コードはbuffer[100] = {0}、両方ともすべての要素を 0 に初期化するのと同等buffer[100] = {1, }です。

于 2013-04-22T08:00:25.187 に答える
1

特定のサイズの配列の初期化子は、配列メンバーに 1 対 1 で割り当てられます。すべてのメンバーの初期化子が少なすぎる場合、残りのメンバーは 0 に初期化されます。特定のサイズの配列に対してリストする初期化子が多すぎるとエラーになります。

于 2013-04-22T08:00:48.143 に答える