6

私はプログラミングに比較的慣れていないので、4 次元配列を入力する必要があります。それでは、単純な 3 次元配列から始めましょう。それぞれ次のような 2 つの要素があります。

int arr[2][2][2] = 
{
    {
        {1, 2}
        {3, 4}    //redline on "{"
    }
    {             //redline on "{"
        {5, 6}
        {7, 8}
    }
};

VS-2012 は、"3" の前に "{" をレッドラインし、代わりに "}" が必要であると言います。きちんとした形式で配列を入力するにはどうすればよいですか? 4 次元になるとさらに複雑になるため、データをはっきりと見る必要があります。

また、配列に十分な数のゼロを含める予定です。本質的に、すべての arr[n][n] が 0 になるため、初期化をもう少し簡単にできるかどうか疑問に思っています。

私の配列はタイプになります

int arr[7][7][15][2]

それとも、代わりに構造体を使用した方がよいでしょうか?

前もって感謝します!

4

5 に答える 5

6

がありません,

三次元配列の場合

 int arr[2][3][4] = { 
                       { 
                          {1, 2, 1, 2}, {1, 2, 1, 4}, {1, 2, 4, 4} 
                       },
                       {  
                          {1, 1, 2, 4}, {1, 2, 1, 4}, {1, 2, 1, 4} 
                       } 
                    };

or int arr[2][3][4] = {1,2,1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,2,1,4}; 

4 次元配列の場合

int arr[2][3][4][2] = {
                        {
                          {
                            {1,2},{1,2},{1,2},{4,2}
                          },
                          {
                            {2, 4},{1, 4},{1, 4},{1,2}
                          },
                          {
                            {2, 4},{1, 4},{1, 4},{1,8}
                          }
                       },
                       {
                         {
                           {1,2},{1,2},{1,2},{4,2}
                         },
                         {
                           {2, 4},{1, 4},{1, 4},{1,2}
                         },
                         {
                           {2, 4},{1, 4},{1, 4},{1,2}
                         }
                      }
                    };
于 2013-11-08T16:09:49.070 に答える
4

角かっこで囲まれた各要素は、たとえばint内部の の1 つとして表示できます。{ 1, 2 }リストで初期化すると、個別の要素がコンマで列挙されます。したがって、正しい構文は、括弧で囲まれた各配列 ( { { 1, 2 }, { 3, 4 } })の後にカンマを付けたものになります。

int arr[2][2][2] = 
{
    {
        {1, 2},
        {3, 4}
    },
    {            
        {5, 6},
        {7, 8}
    }
};

4 次元配列の場合、多くの「ハードコーディング」コードを作成する必要があります。おそらく、値を入力してくれる関数を書いたほうがよいでしょう。

于 2013-11-08T16:11:16.180 に答える
0

静的に宣言された配列のメモリ割り当てには、 C常に行優先順を使用することに注意してください。:

  • 2-D 配列の場合int A[3][2]、メモリ割り当てが最初の要素から始まるとします。つまりA[0][0]、その後A[0][1]、次の行にジャンプしますが、メモリ割り当ては連続するため、メモリ レイアウトの順序で次の要素はA[1][0]thenになりA[1][1] -> A[2][0] -> A[2][1]ます。
  • したがって、初期化の場合のより簡単な方法は、1-D 形式で線形に視覚化して書き留めることです。

int arr[2][3][4] = {1,2,1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,2,1,4};

于 2016-03-20T17:40:06.727 に答える
0

外側の中かっこの内側では、内側の中かっこ{ }は行列の行を表します。しかし、どのコンマが必要ですか? また、オプションのコンマはどれですか?

C 1999 の 2 次元配列宣言の初期化:

  1. 中括弧は行列の行を表します。

  2. 隣接する 2 つの行列要素の初期化値の間には、(改行で区切られている場合でも) コンマを入れる必要があります。

  3. 隣接する中括弧のペアの間にはコンマが必要です。ただし、一部の標準コンパイラ (?) では、このコンマは省略可能です。

  4. 各行の最後の要素の後の末尾のコンマはオプションです (中括弧を使用する場合)。

  5. 最後の内部ブレースの後の末尾のカンマはオプションです。

  6. 最後の外括弧の後にセミコロンが必要です。

(標準 C 1999 の専門家は、上記のリストを編集して誤った記述を修正してもらえますか?)

于 2014-01-12T19:24:30.360 に答える
-1

4 次元配列の表現

int arr[2][2][2][2] = 
{
    { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }, 
    { { {9,10}, {11, 12} }, { {13, 14}, {15, 16} } }
};
于 2017-03-22T09:03:54.973 に答える