2016-03-25 1 views
8

私はBruce Dawson's article on porting Chromium to VC 2015、彼はencountered some C code that I don't understandです。char c [2] = {[1] = 7}とは何ですか?行う?

コードは次のようになります。その上

char c[2] = { [1] = 7 }; 

ブルースの唯一のコメントは以下のとおりです。「私は使用される配列の初期化構文に慣れていないです - 私はそれはいくつかのC-のみの構築であると仮定します」では、この構文は実際にはどういう意味ですか?

答えて

12

C99を使用すると、配列の要素を任意の順序で指定できます(検索する場合は「指定初期化子」と呼ばれます)。したがって、このコンストラクトは、cの2番目の要素に7を割り当てています。

この式は、char c[2] = {0, 7};と等価です。この式は、短い初期化子のスペースを節約するものではありませんが、スパースの大きい配列には非常に役立ちます。

詳細については、このページを参照してください: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

+2

を言うことができるだろう、7}; 'ここで指定された初期化子は、長い配列や構造の場合には非常に便利です。 –

+0

それは視覚化するもう一つの簡単な方法です。答えに追加されました。 –

2

その意味は

char c[2]={ 0, 7 } 

か、[2] = {0これは、 `char型のCと同等だ

char c[2]; 
c[0]=0; 
c[1]=7; 
+0

なぜ 'NULL'、それはヌル***ポインタ***定数ですか? 'char'を初期化するために' 0'または '\ 0''を使いたいとします。 – alk

+0

oh sryは0x0を意味します。NULL – Mukesh

+0

2番目の例はイニシャライザではなく実行時の文です。 –

関連する問題