A Pointer to an array means it is a variable (pointer variable) that holds the address of the array, which will be the first byte of the allocated array space, or the address of the first element of that array.
Pointer to anything is basically a variable holding the address of the first byte of that allocated memory.
Moreover, an array is derived datatype in C, that stores elements of the same datatype, hence an array of pointers is an array storing various pointer variables.
int arr[5]; declared an array of size 5 ptr= arr; / This is ptr which holds the address of starting location of array Pointer holds the starting address of the array only , we can increment pointer to go to further next address holding the data An array is derived data type in c which hold the elements of same type like::int,char etc
I think the most significance difference between array and pointer of array is related to allocation of memory . In pointer of array , the memory is allocated at the run-time while in array its not the same case.
Pointer to array: lets say *ptr, which is pointing to a memory location which holds variable of, let's say integer datatypes, so this is a pointer to an array. and can be allocated by simple malloc statement.
Array of pointers : it is an array which is containing pointer variables as datatypes, just like *ptr[10] or **ptr these pointers are pointing to a memory location which holds pointer datatypes.
summary: pointer to an array holds base address of a memory location containing non-pointer datatypes and array of pointers containing pointer variables within them, which will also be pointing to somewhere in the heap.