为什么以下会产生分段错误?

cse*_*cse 8 c const segmentation-fault

int main()
{
        char *temp = "Paras";

        int i;
        i=0;

        temp[3]='F';

        for (i =0 ; i < 5 ; i++ )
                printf("%c\n", temp[i]);

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么 temp[3]='F';会造成分割的错,因为temp是不const

Bil*_*nch 9

您不能修改字符串文字.

  • @cse`char*temp ="Paras"`表示`temp`指向字符串文字.未定义尝试修改字符串文字.https://www.securecoding.cert.org/confluence/display/seccode/STR30-C.+Do+not+attempt+to+modify+string+literals`char temp [6] ="Paras";`做某事完全不同 - 它创建一个数组(不是指针,而不是常量),**将字符串文字复制**到该数组中. (6认同)