这个c程序有什么问题啊?编译没检查出错,但运行就崩溃了

#include
void delspace(char *);

int main(void)
{
char *ptr = " asd as,vs aw";
delspace(ptr);
puts(ptr);
}

void delspace(char *ps)
{
char *pt = ps;
while (*ps != '\0')
{
if (*ps != ' ')
{
*pt = *ps;
pt++;
}
ps++;
}
*pt = '\0';
}

 char *ptr = " asd as,vs aw";

改为

 char ptr[] = " asd as,vs aw";

第一种好像被认为是常量了,所以赋值运算就出错。

 #include <stdio.h>
void delspace(char *);

int main(void)
{
    char str[] = " asd as,vs aw";
        char *ptr = str;
    delspace(ptr);
    puts(ptr);
}

void delspace(char *ps)
{
    char *pt = ps;
    while (*ps != '\0')
    {
        if (*ps != ' ')
        {
            *pt = *ps;
            pt++;
        }
        ps++;
    }
    *pt = '\0'; 
}

http://codepad.org/ZFv7KlHF

asdas,vsaw

在线运行通过

应该是形参和实参的传递问题