1

ポインターが 1D および 2D 配列でどのように機能するかは知っていますが、3D 配列でそれを理解しようとしています。

1D 配列の場合:

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

C 列の 2D 配列の場合

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 に答える