一段简单的c代码,一直报错,求大神们指点

 char * reverse_str(char *s){
    char *p = s;
    char *q = s;
    char temp = 0;

    while(*q != '\0'){
        q++;
    }

    q--;//\0前一个字符

    while(p < q){
        temp = *p;
        *p = *q;
        *q = temp;
        p++;
        q--;
    }

    return s;
}

调试之后发现是交换那段循环的问题,不知道问题出在哪,求指点!

http://codepad.org/zfdaNroy
程序没问题

是不是你试图改变的是常量
比如
char * s = "hello";
那么就会报错。