I have read this answer
Adressing your question - pointer to array is usefull to pass an entire array of compile-time known size and preserve information about its size during argument passing.
But i don't really understand it. Aren't the size of arrays with a given size already known at compile-time? How do you get the size of the array if you have a pointer to it? Take this example:
void func(int (*array)[5])
{
}
// identical to
void func(int *array, int size)
{
}
You have to put 5 there, so what's the point of it? You still can't iterate over it unless you already know the size.
std::vectororstd::array, since they carry around that information with them