4

3 次元配列があります。3 つのループを使用せずにデフォルト値に初期化するにはどうすればよいですか。

dummy[4][4][1024]

、すべての要素を 12 に初期化するにはどうすればよいですか?

4

3 に答える 3

10

3 次元配列はメモリの連続ブロックであるため、1 次元配列として表示できます。

int i, *dummy2 = &dummy[0][0][0];
for(i = 0; i < 4*4*1024; ++i)
    dummy2[i] = 12;
于 2012-05-25T21:13:52.120 に答える
7

みんなに来てください-常に機能する簡単な方法でやってみましょう:


for(int i = 0; i < 4; i++)
{
  for(int j = 0; j < 4; j++)
  {
    for(int k = 0; k < 1024; k++)
    {
      dummy[i][j][k] = 12;
    }
  }
}

于 2012-05-25T21:29:15.653 に答える
5

すべてゼロへのデフォルトの初期化は、まさに次のとおりです。

unsigned dummy[4][4][1024] = { 0 };

特定の要素 (および他のすべての要素) をゼロに初期化したい場合は、これを行います

unsigned dummy[4][4][1024] = { { { 5 }, { 0, 4 } } };

コンパイラがC99を認識している場合は、指定された初期化子を使用します

unsigned dummy[4][4][1024] = { [3] = { [2] = { [0] = 7 }, [1] = { [2] = 3, [1] = 4 } } };

本当に all を使用したい場合は、 16384 回12繰り返してください :)12

于 2012-05-25T21:36:48.960 に答える