An array name, without brackets, is really a constant pointer
to the first element in the array.
If you want the address of an array element, then you can
add the element's index to the value assigned to the array's
name.
If you want to march a pointer along an array, then define a
pointer variable of the appropriate type, and assign the
pointer initially to the value assigned to the array's name,
and then increment the pointer.
If you want to read the value of an array element, then you
can use ordinary bracket notation by instantiating the following
pattern:
*-- Array index
|
v
array name[n]
If you want to read the value of an array element, then
you can dereference an array pointer by instantiating
the following pattern:
*-- Dereferencing operator
|
| *-- Array index
| |
v v
*(array name + n)