検索

ホームページ  >  に質問  >  本文

c++ - C语言多维数组问题,本人小白刚学c

请问各位大神,二维数组和三维数组的本质是神马?为啥要取多次*呢?那多维数组呢?对一维、二维、三维等数组名取地址取得是神马呢?请说得仔细点,本人小白,谢谢各位大神了

PHP中文网PHP中文网2806日前658

全員に返信(2)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 15:30:07

    c の多次元配列は配列の配列である必要があるため、3D 配列は要素が 2D 配列である配列であり、2D 配列は要素が 1D 配列である配列です。

    リーリー
    1. まず、1 次元配列の配列名は 1 次元配列の開始アドレスであることを明確にする必要があります。

    2. 多次元配列から取得した最下位次元を除く要素は、配列の開始アドレスである「配列名」とみなすことができます。たとえば、A[2] が A4 から取得された場合、A[2] は A4 内の 2 番目 (0 から数えて) の 1 次元配列の開始アドレスになります。

    3. それでは、4)から始めます。array[i][j][k]は単なる値なので問題ありません。

    4. 3) を見てみましょう。 array[i][j] は、この 3 次元配列で i 番目の 2 次元配列を選択し、次にこの 2 次元で j 番目の 1 次元配列を選択することを意味します。配列なので、array[i][j] はこの 1 次元配列の開始アドレス (1 次元配列の配列名として理解できます) なので、int (*c) を使用します。

    5. スキップ 2) 1) を見てみましょう。array は 3 次元配列の配列名であり、要素が 2 次元であるため、3 次元配列の開始アドレスでもあります。配列なので、int (*a)[4][5]

    6. を使用します。

    その後、* 多くの質問があります:
    たとえば、この A[m][n](i,j)
    にアクセスしたい場合は、*(*(A + i) + j) を使用します。なぜなら、A は 2 次元配列の名前です。したがって、これは 2 次元配列の開始点です。開始アドレス A + i は A の i 番目の要素のアドレスであり、その値を取得するには × を使用します。値は 1 次元配列です。この 1 次元配列の開始アドレス、(A + i) + j は、この 1 次元配列の j 番目の要素のアドレスを取得し、 を使用してこの値を取得します。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:30:07

    本質的に、それらはすべて配列です。1 次元空間が直線であるのと同じように、2 次元空間は 1 つの次元を拡張することによって得られます。三次元空間。

    返事
    0
  • キャンセル返事