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

Raj*_*jan 0 c pointers segmentation-fault

这段代码抛出了seg错误.请帮我找出相同的原因

#include<stdio.h>

int main() {
        char* str;
        str = "abcd";
        str[0] = 'r';
        printf("%c\n" , str[0]);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

cni*_*tar 6

C FAQ 1.32中做了很好的解释.修改字符串文字是非法的.

6.4.5/6

如果这些数组的元素具有适当的值,则不确定这些数组是否是不同的.如果程序试图修改这样的数组,则行为未定义.