为什么此代码片段会出现分段错误

发布于 2024-12-08 01:00:44 字数 221 浏览 0 评论 0原文

这段代码抛出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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我纯我任性 2024-12-15 01:00:44

C FAQ 1.32 中有很好的解释。修改字符串文字是非法的。

6.4.5/6

未指定这些数组是否不同,只要它们的
元素具有适当的值。如果程序试图
修改这样的数组
,行为未定义。

Well explained in C FAQ 1.32. It's illegal to modify string literals.

6.4.5/6

It is unspecified whether these arrays are distinct provided their
elements have the appropriate values. If the program attempts to
modify such an array
, the behavior is undefined.

半夏半凉 2024-12-15 01:00:44
    str = "abcd";
    str[0] = 'r';

这尝试修改字符串文字。正式地说,这是未定义的行为。然而,在大多数现代系统上,保存字符串文字的内存将被标记为只读,因此尝试修改它们将产生错误。

    str = "abcd";
    str[0] = 'r';

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.

み格子的夏天 2024-12-15 01:00:44

这类似于问题 与分段错误相关

请参阅此处以获取更多信息。

This is similar Question related to Segmentation Fault

Refer this for more info.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文