あのね、配列全部を関数にぶん投げたかったのです。
一次元配列のときは、int A[NN];という配列があったとして、それをなんらかの関数にぶち込むときは、int hoge (int A[], int n);とかでよかった訳だが、今は訳あって3次元の配列、A[LL][MM][NN]を考えてる。これを3次元というかは微妙だけど。配列が行列のようなものだと思うと3階のテンソルのような感じなので、3階の配列といった方が良いのかは微妙。というか、そもそもコードに落とす段階でもっときれいな形で書けよっていう話なんだけど、頭の中が算数で凝り固まってるので無理です。
そういうことで、こりゃポインタで渡すのが妥当かなと思ったんだけど、
int hoge (int A[NN][NN][NN]);
で渡せるらしい。
試しに、A[3][3][3] = {{{111, 112, 113}, ...}っていうのを作って、それを系統的に表示させるプログラムを組んだ。
#include <stdio.h> int hoge (int A[3][3][3]); int main () { int A[3][3][3] = {{{111, 112, 113}, {121, 122, 123}, {131, 132, 133}}, {{211, 212, 213}, {221, 222, 223}, {231, 232, 233}}, {{311, 312, 313}, {321, 322, 323}, {331, 332, 333}}}; hoge (A); return 0; } int hoge (int A[3][3][3]) { int i, j, k; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { for (k = 0; k < 3; k++) { printf ("%d, ", A[i][j][k]); } printf ("?n"); } printf ("?n"); } return 0; }
とかした。
うまく動いた。
何でかはわかんね。配列のサイズが分かってるから動くってことなんだろうな。ああいう書き方はあんまし一般的ではない気もする。でもあんまし深いところまでやってもしょうがないので、今は動くだけでよしとしておこうと思います。それにしてもNunoさんはネ申であるなあ。