I understand that pointers use dynamic memory allocation so they are much more flexible then a built in array, but if you already have an existing array, don't you already have static memory allocation for that array? Why bother assigning a pointer? Regardless of the pointer, doesn't the program still allocate static memory to the array anyway?
No matter how you get the memory, it has to be an allocated array in memory (meaning a block of memory your program is allowed to access).
Pointers are simply much more flexible than arrays.
Further, arrays are not first class objects. (You can't pass an array to a function, for example. You pass a pointer to the first element in the array.)