I am not entirely sure what your problem is, but I will try to explain the indexing to you:
What you create in your example is a three dimensional array (or a nested array if you will).
I'm sure you understand simple arrays like the following
            ---x---
int a[3] = {1, 2, 3};
Now when you request a[x] the x will determine which position of the array is chosen.
A two dimensional array is merely an array of arrays
                ---------y--------
                ---x---    ---x---
int b[2][3] = {{1, 2, 3}, {4, 5, 6}};
When you request b[y][x] the y will determine which of the two one dimensional arrays is chosen and then the x tells you which position of that array.
A three dimensional array is only taking this one level higher: an array of arrays of arrays
                    ----------------------z--------------------
                    ---------y---------     ---------y---------
                    ---x---    ---x---      ---x---    ---x----
int c[2][2][3] = {{{1, 2, 3}, {4, 5, 6}}, {{1, 2, 3}, {4, 5, 6}} };
Now a request to c[z][y][x] goes to the z-th 2d-array, then to the y-th 1d-array of that 2d-array and then to the x-th position in this array.
The requests to c[z] or c[z][y] will only result in addresses of arrays and not yield any actual int values.