[
Example 4: 
int x3d[3][5][7];
declares an array of three elements,
each of which is an array of five elements,
each of which is an array of seven integers
.  The overall array can be viewed as a
three-dimensional array of integers,
with rank 
3×5×7.  Any of the expressions
x3d,
x3d[i],
x3d[i][j],
x3d[i][j][k]
can reasonably appear in an expression
.  The expression
x3d[i]
is equivalent to
*(x3d + i);
in that expression,
x3d
is subject to the array-to-pointer conversion (
[conv.array])
and is first converted to
a pointer to a 2-dimensional
array with rank
5×7
that points to the first element of 
x3d.  Then 
i is added,
which on typical implementations involves multiplying
i by the
length of the object to which the pointer points,
which is 
sizeof(int)×5×7.  The result of the addition and indirection is
an lvalue denoting
the 
ith array element of
x3d
(an array of five arrays of seven integers)
.  If there is another subscript,
the same argument applies again, so
x3d[i][j] is
an lvalue denoting
the 
jth array element of
the 
ith array element of
x3d
(an array of seven integers), and
x3d[i][j][k] is
an lvalue denoting
the 
kth array element of
the 
jth array element of
the 
ith array element of
x3d
(an integer)
. — 
end example]