>>330
>return(x)は配列そのものを渡してるから、全ての次元を弄れるんですね。
>return(x[10])だとx[10]の子分、x[10][3]とかしか返せないんですね。

その認識ならあってる。

>何故int x(x[][10][10])のような書き方をするんでしょうか。
何度も言うけど、"int x[] = int *x"だ。
C言語では、配列を渡すのは「配列の先頭へのポインタを渡す」という形で実現してる。
つまり一次元配列を引数に持つ時は本来なら
int func(int* x)
と書くのが正しい。だけど、それだと渡されたポインタが「ただのポインタ」なのか「配列の先頭へのポインタ」なのか分かりづらいので、
int func(int x[])
と書くことで、「引数xは配列ですよ」と明示できるようになってる(プログラマにとって分かりやすいというだけで、内部的な処理はどちらも同じ)

>int x(int x)じゃだめなのか
「引数に渡す」という動作は、代入とほぼ同じ。
int x[10][10] = {0};
int y = 5;
と宣言した時、
y=x;
という代入が成立しないのは直感的にわかるでしょ

あと、ずっとやってるけど
int x[n]
と書いたとき、xの要素はx[n-1]までだからな。int x[10][10]ならx[9][9]までしかアクセスしちゃだめよ