不理解 char *s[5]

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
int main()
{
    int i, m, n;
    char *s[5] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
    char**p = s;
    scanf("%d%d", &m, &n);
    for (i = 0; i < m; i++)p++;
    printf("%s", *p);
    printf("%c", *(*p + n));
    return 0;
}
请问char *s[5] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};为什么能这么定义,char*s[5]不是一个指向char型的指针数组吗

char *s[5]是个指针数组,它里面有5个指针。那么我们单独拿出一个来看
char *a="Monday";
a是一个指向字符串常量的指针,你可以操作它去取出字符串里的每一个字符,但不能修改。
那么char *s[5]= {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};不过就是一次定义了5个这样的指针罢了

char*s[5]是一个指针||指向||大小为5||的字符数组,所以装不下大于4个字符的字符串