Ran some tests:
typedef int X[10];
#define typeinfo(t) _Generic((t), \
  X: "int X[10]", \
  int: "int", \
  int *: "int *", \
  const int *: "const int *", \
  default: "not" \
  )
int main(void) {
  const int a[10];
  const X b;
  printf("%zu\n", sizeof (const int *));
  puts(typeinfo(a));
  puts(typeinfo(b));
  printf("%zu\n", sizeof a);
  printf("%zu\n", sizeof b);
  puts(typeinfo(a[0]));
  puts(typeinfo(b[0]));
  printf("%zu\n", sizeof a[0]);
  printf("%zu\n", sizeof b[0]);
}
Output
4
const int *
const int *
40
40
int
int
4
4
Both have the same size and both convert to the same type when passed as an argument.  Neither is a pointer.  Both are arrays.
By code analysis and testing - they are the same type.