字符串 下部的代码为什么跑不通

字符串 下边的代码为什么跑不通?
int main()
{
    char *c="123456789";
    c[8]='0';
    printf("%c\n",c[8]);
    return 0;
}

------解决方案--------------------

 char *c="123456789";
//静态区存放在,这片数据只是可读的!不能更改的!

------解决方案--------------------
char *c="123456789";
这句话可以理解分两步走,第一步是建立内容为“123456789”的常量字符串,第二部是将该字符串的首地址赋给c。如果你想改常量的内容,肯定是要报错的。
char c[20]="123456";
这个是给数组c的前7个位置幅值,修改时候就不会报错了。