字符指标初始化有关问题

字符指标初始化问题
大家好,
     我想请问一下下面的这个代码,为什麽字符指标 ps没有初始化的话,就会产生
Segmentation Fault ? 

main(){
    char st[20],*ps;
    int i;
    printf("input a string:\n");
    ps=st;
    scanf("%s",ps);
    for(i=0;ps[i]!='\0';i++)
        if(ps[i]=='k'){
            printf("there is a 'k' in the string\n");
            break;
        }
    if(ps[i]=='\0') printf("There is no 'k' in the string\n");
}
c

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

for(i=0;ps[i]!='\0';i++)
//没有初始化,这里可能一直都没有遇到结束符'\n', 就会越界访问了
//就段错误了