这是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];
转载于:https://blog.51cto.com/skyraker/1263703