请问各位大神,二维数组和三维数组的本质是神马?为啥要取多次*呢?那多维数组呢?对一维、二维、三维等数组名取地址取得是神马呢?请说得仔细点,本人小白,谢谢各位大神了
认证0级讲师
c の多次元配列は配列の配列である必要があるため、3D 配列は要素が 2D 配列である配列であり、2D 配列は要素が 1D 配列である配列です。
まず、1 次元配列の配列名は 1 次元配列の開始アドレスであることを明確にする必要があります。
多次元配列から取得した最下位次元を除く要素は、配列の開始アドレスである「配列名」とみなすことができます。たとえば、A[2] が A4 から取得された場合、A[2] は A4 内の 2 番目 (0 から数えて) の 1 次元配列の開始アドレスになります。
それでは、4)から始めます。array[i][j][k]は単なる値なので問題ありません。
array[i][j][k]
3) を見てみましょう。 array[i][j] は、この 3 次元配列で i 番目の 2 次元配列を選択し、次にこの 2 次元で j 番目の 1 次元配列を選択することを意味します。配列なので、array[i][j] はこの 1 次元配列の開始アドレス (1 次元配列の配列名として理解できます) なので、int (*c) を使用します。
array[i][j]
int (*c)
スキップ 2) 1) を見てみましょう。array は 3 次元配列の配列名であり、要素が 2 次元であるため、3 次元配列の開始アドレスでもあります。配列なので、int (*a)[4][5]
array
int (*a)[4][5]
その後、* 多くの質問があります: たとえば、この A[m][n] が (i,j) にアクセスしたい場合は、*(*(A + i) + j) を使用します。なぜなら、A は 2 次元配列の名前です。したがって、これは 2 次元配列の開始点です。開始アドレス A + i は A の i 番目の要素のアドレスであり、その値を取得するには × を使用します。値は 1 次元配列です。この 1 次元配列の開始アドレス、(A + i) + j は、この 1 次元配列の j 番目の要素のアドレスを取得し、 を使用してこの値を取得します。
A[m][n]
(i,j)
*(*(A + i) + j)
A + i
本質的に、それらはすべて配列です。1 次元空間が直線であるのと同じように、2 次元空間は 1 つの次元を拡張することによって得られます。三次元空間。
c の多次元配列は配列の配列である必要があるため、3D 配列は要素が 2D 配列である配列であり、2D 配列は要素が 1D 配列である配列です。
リーリーまず、1 次元配列の配列名は 1 次元配列の開始アドレスであることを明確にする必要があります。
多次元配列から取得した最下位次元を除く要素は、配列の開始アドレスである「配列名」とみなすことができます。たとえば、A[2] が A4 から取得された場合、A[2] は A4 内の 2 番目 (0 から数えて) の 1 次元配列の開始アドレスになります。
それでは、4)から始めます。
array[i][j][k]
は単なる値なので問題ありません。3) を見てみましょう。
array[i][j]
は、この 3 次元配列で i 番目の 2 次元配列を選択し、次にこの 2 次元で j 番目の 1 次元配列を選択することを意味します。配列なので、array[i][j]
はこの 1 次元配列の開始アドレス (1 次元配列の配列名として理解できます) なので、int (*c)
を使用します。スキップ 2) 1) を見てみましょう。
array
は 3 次元配列の配列名であり、要素が 2 次元であるため、3 次元配列の開始アドレスでもあります。配列なので、int (*a)[4][5]
その後、* 多くの質問があります:
たとえば、この
A[m][n]
が(i,j)
にアクセスしたい場合は、
*(*(A + i) + j)
を使用します。なぜなら、A は 2 次元配列の名前です。したがって、これは 2 次元配列の開始点です。開始アドレスA + i
は A の i 番目の要素のアドレスであり、その値を取得するには × を使用します。値は 1 次元配列です。この 1 次元配列の開始アドレス、(A + i) + j は、この 1 次元配列の j 番目の要素のアドレスを取得し、 を使用してこの値を取得します。本質的に、それらはすべて配列です。1 次元空間が直線であるのと同じように、2 次元空間は 1 つの次元を拡張することによって得られます。三次元空間。