1

我知道指针如何为 1D 和 2D 数组工作,但我正试图为 3D 数组弄清楚。

对于一维数组:

V[i] ==> *(V+i)

对于具有 C 列的二维数组

M[i][j] ==> *(M+(C*i+j))

3D 数组的指针算法是什么?

4

4 回答 4

3
M[i][j] ==> *(M+(C*i+j))

错误的。这是

M[i][j] ==> *(*(M+i)+j)

3D

M[i][j][k] ==>  *(*(*(M+i)+j)+k)
于 2013-04-22T22:33:50.330 回答
2

如果 3D 数组有 C 列和 R 行,则每个切片是 C*R 元素。

M[i][j][k] = *(M + C*R*i + C*j + k)
于 2013-04-22T22:34:06.877 回答
2

使用指针语法重写订阅然后扩展指针算术给出:

M[i][j][k] = *(*(*(M + i) + j) + k) = *(&M[0][0][0] + x * y * i + y * j + k)

其中 x、y 和 z(后一个未使用)是数组的维度。

于 2013-04-22T22:38:49.393 回答
-1

对于矩阵 M[X][Y][Z]

M[i][j][k] = *(M+(Y*Z*i+Z*j+k))

于 2013-04-22T22:35:10.083 回答