这是k书中的strcpy的例子:


void strcpy(char *s, char *t)
{
    while (*s++ = *t++)
        ;
}


用来将字符串t复制到字符串s


编译环境,虚拟机中的LINUX。


编译完成后运行,产生segmentation fault错误,错误的内存引用。


K书中写到,pmessage是一个指针,其初值指向一个字符串常量,之后它可以被修改以指向其它地址,但是如果试图修改字符串的内容,结果是没有定义的。


疑问:既然字符串的内容是不能更改的,那么这个strcpy函数又是怎么回事呢?


           什么叫结果是没有定义的?


解决:直接指向一个字符串的指针是不能修改的!也就是如同 *pmessage = "fsdfsdfsd" 的指针是不能修改其内容的!


            能修改内容的是 char *pmessage

                                         pmessage = &string[0];