When a pointer to an array increments to iterate across the array. Does this action create an array of pointers like:

---------
ptr points to an array &a[0], when ptr increments:
---------
ptr+1 would point to &a[1]
---------
|
|
and so on.......

where ptr+1 memory block is right after ptr, and ptr+2 is right after ptr+1, ......
Also, my other question, if the memory block, right after ptr is used, by some other variable, does ptr+1 use the next open memory slot, or does the program throw an error, at compile time?
Thank you guys,