三维数组的指针算法

时间:2013-04-22 22:25:03

标签: c arrays pointers

我知道指针对于1D和2D数组是如何工作的,但我正在试图找出3D数组。

对于一维阵列:

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

表示具有C列

的2D数组
M[i][j] ==> *(M+(C*i+j))

3D阵列的指针算法是什么?

4 个答案:

答案 0 :(得分:4)

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

错误。它是

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

for 3D

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

答案 1 :(得分:3)

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

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

其中x,y和z(后者未使用)是数组的维度。

答案 2 :(得分:0)

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

M[i][j][k] = *(M + C*R*i + C*j + k)

答案 3 :(得分:-1)

表示矩阵M [X] [Y] [Z]

  

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