关于指针数组的1点疑惑

关于指针数组的一点疑惑
下面一段代码:


#include<stdio.h>

void main()
{
        int i;
        char *pch[6] = {"妹","妹","你","别","走"};
        for (i = 0;i < 6;i ++) 
        {   
                printf("%s",pch[i]);
    
        }   
        printf("\n");
        for (i = 5;i >=0;i--)
        {   
                printf("%s\n",pch[i]);
        }   
}


编译运行后出现如下情况:
妹妹你别走(null)
段错误 (核心已转储)


如何才能让他正常不会出现段错误?
隐隐约约的感觉是不是这个字符串数组 {"妹","妹","你","别","走"}; 是常量造成的。感觉自己说不清楚。


各位大侠发表下高见啊。
------解决思路----------------------
pch[5]是空啊,数组初始化时,如果元素少于个数时,后面会被初始化为0
你pch[6]有六个元素, {"妹","妹","你","别","走"} 只有五个,所以最后一个初始为0,所以就显示(Null)了
就比如你写int a[5] = {1,2,3};   那么a中的值为 1 2 3 0 0
------解决思路----------------------
引用:
@paschen
我问的不是这个啊。。
我是指段错误。为什么会有段错误


访问空指针就会段错误啊
------解决思路----------------------
printf的%s不支持nullptr空指针吧