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.