【发布时间】:2012-12-24 02:42:29
【问题描述】:
可能重复:
Why does char* cause undefined behaviour while char[] doesn’t?
请看下面的代码
int main (int argc, char* argv[])
{
char* s = "Hello world!";
s[0] = 'X';
return 0;
}
这段代码中的段错误来自哪里?
更新: 相反,下面的代码没有给出段错误,为什么?
int main (int argc, char* argv[])
{
char s[] = "Hello world!";
s[0] = 'X';
return 0;
}
【问题讨论】:
-
查看副本。简而言之,
char *s = "Hello World!";让s指向字符串文字的(第一个字符),并且尝试修改字符串文字是未定义的行为,通常会导致崩溃,因为它们存储在只读内存中。char s[] = "Hello World!";创建一个可写的char[13]。 -
我们可以为这个特殊的骗子设置一个单独的标签吗?
char *variable ="string"; variable[0]='ch';? ;)
标签: c segmentation-fault