That's a fallacy: in such a (corrected) function, one has a pointer to the first array in an array of arrays.But it doesn't really matter because even if you use such syntax, it's still used as a pointer, hence it is a pointer and not an array. You can't get the size of the array, you can't see the contents of the array because it's a pointer.
If we use sizeof as the determinant, then within the caller, we have an array of arrays, not a pointer to the first array of an array of arrays.
I would sum that up as: an array is basically a pointer, but an array is not a pointer.But it doesn't change that the array is basically a pointer. The compiler just needs to know how to calculate the offset. You could see an array as a tool for helping a programmer use a contiguous memory block with pointers.
It will still just use a pointer and calculate the offset.
For the purposes of understanding how it all actually works, we can say that an array is basically a pointer. When it comes to interpreting the syntax with respect to the language, an array is not a pointer.