Когда у вас есть такой массив:
int foo[3][2][2];
и вы делаете:
int *bar = &foo[0][0][0];
Так это работает?
*bar == foo[0][0][0];
*(bar+1) == foo[0][0][1];
*(bar+2) == foo[0][1][0];
*(bar+3) == foo[0][1][1];
*(bar+4) == foo[1][0][0];
Я не уверен, и немного кода зависит от того, работает ли он.