2009-11-06 19 views

答えて

29
double myArray[3][12] = {0}; 

か、あなたがgccの警告を回避したい場合は、 "初期化周りの行方不明中括弧は"(警告が-Wallまたは、より具体的に-Wmissing-bracesが表示されます)

double myArray[3][12] = {{0}}; 
+0

段落コードブロック(行の先頭に4つのスペース)を使用すると、シンタックスハイライトが得られます。これは、インラインブロック(バッククォート)を使用する場合には使用しません。 –

+0

ありがとう、編集されました。私が答えたとき、私はバックティックモードでした:) – pmg

+0

大変ありがとう! –

1

私はそれを考えます

double myArray[3][12] = {0} 
9

ifネストできますかっこ、

double myArray[3][12] = { 0 }; 

あなたが実際の値を入力する場合:あなたは次の操作を行い、ゼロで初期化したいあなたが使用すること

double myArray[3][3] = { { 0.1, 0.2, 0.3 }, { 1.1, 1.2, 1.3 }, { 2.1, 2.2, 2.3 } }; 
+0

すべてを初期化する方法を指摘するため+1が、なぜあなたは配列を短くしましたか? :P – pmg

+9

私は数字の12セットを入力したくないので、私は配列を短縮しました。 –

1

double myArray[3][12] = { 0 }; 

または

double myArray[3][12]; 
memset(myArray, 0, sizeof(double) * 3 * 12); 
6

pmg 'ただし、正しい結果が得られるのは、

double myArray[3][12] = {{}}; 

です。

また、some_numberがゼロのときにそれを期待して

double myArray[3][12] = {{some_number}}; 

のみ動作することに注意してください。

私は配列は3.1さんの完全ではないでしょう

double myArray[2][3] = {{3.1}}; 

、代わりにそれは

3.1 0.0 0.0 
0.0 0.0 0.0 

だろうと言っていた場合たとえば、(最初の要素は一組だけです残りはゼロに設定されます)

このquestion (c initialization of a normal array with one default value)には、さらに詳しい情報があります

+1

空の初期化子が無効ですC(私はそれがC++であると信じています)。 – pmg

0

pmgのメソッドは、uが任意の配列を部分的に初期化する場合、それらの残りの部分がデフォルト値のゼロを取得するという概念で機能するので、最も効果的です。そうでなければ、配列をグローバル変数として宣言できます。初期化されていない場合、配列要素は自動的にデフォルト値(コンパイラに依存します)に設定されます。

1

@JSBձո@は、質問のタイトルと完全に一致する実際の値で初期化するための構文を思いつきました。これは私をここに導いてくれました(私は索引の順序に興味がありました)。

myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } }; 

最初のインデックスは行インデックスが最も遅いインデックスです。これはF(Fortran)の順序とは対照的にC順序として知られています。