为什么此代码片段会出现分段错误
这段代码抛出seg错误。请帮我找出同样的原因,
#include<stdio.h>
int main() {
char* str;
str = "abcd";
str[0] = 'r';
printf("%c\n" , str[0]);
return 0;
}
谢谢
This piece of code throws seg fault.Please help me identify the reason for the same
#include<stdio.h>
int main() {
char* str;
str = "abcd";
str[0] = 'r';
printf("%c\n" , str[0]);
return 0;
}
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
C FAQ 1.32 中有很好的解释。修改字符串文字是非法的。
Well explained in C FAQ 1.32. It's illegal to modify string literals.
这尝试修改字符串文字。正式地说,这是未定义的行为。然而,在大多数现代系统上,保存字符串文字的内存将被标记为只读,因此尝试修改它们将产生错误。
This attempts to modify a string literal. Officially, that's undefined behavior. On most modern systems, however, the memory holding string literals will be marked read-only, so attempting to modify them will give a fault.
这类似于问题 与分段错误相关
请参阅此处以获取更多信息。
This is similar Question related to Segmentation Fault
Refer this for more info.