我知道指针对于1D和2D数组是如何工作的,但我正在试图找出3D数组。
对于一维阵列:
V[i] ==> *(V+i)
表示具有C列
的2D数组M[i][j] ==> *(M+(C*i+j))
3D阵列的指针算法是什么?
答案 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))