指针和字符串相关基础问题

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int main(){
    printf("请输入月份:");
    int month;
    scanf("%d",&month);
    char *a[]={
        "0",
        "January",
        "Febrary",
        "marth",
        "April",
        "May",
        "june",
        "july",
        "august",
        "jiuyue",
        "october",
        "november",
        "december",
        
    }; 
    printf("%s\n",a[month]);//形式1
    printf("%s\n",*a[month]);形式2 
    char *sp="this is a string";
    printf("第二次:%s",sp);//形式1
    printf("第二次:%s",*sp);//形式2 
    return 0;
} 

运行结果及报错内容

为何形式1正确,形式2错误
sp不是指针变量,指向字符串的首字母吗

这里sp整个是字符串,*sp就是sp[0],只是字符串sp的第一个字符。
上面的也一样