An array is precalculated block of memory that takes up space in the stack. When you are making references to an array you are are using a pointer to that block of memory. i.e. int i; i points to your block of data but is designed only to point to that data whereas a normal pointer can point to arbitrary memory addresses. In other words an array is a pointer, however, it is more restricted (at least it is supposed to be).
It is kind of an abstract concept here. But Polymorphic OOP is correct in saying an array isn't a pointer. However in my example shows how a an array is a pointer. I just don't think this subject is debatable.
//i is a pointer to a block of memory which is large enough to hold 10 ints.
//I am trying to carefully word this so that I don't make it sound like I'm saying i is a pointer to an array.