为char指针赋值时,为什么会出现运行时错误?

-3 c string pointers

我想在分配动态内存后更改char指针的内容,是否可能?如果没有,为什么?我的程序抛出运行时错误.

#include <stdio.h>

int main()
{
    char * str = (char *) malloc (10 * sizeof(char));
    str = "Hello";
    str[2] = 'L'; // here the program throws run time error
    printf("%s", str);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

CIs*_*ies 7

指向时str = "Hello";你没有复制"Hello"到指向的地址str.相反,您指向str字符串文字,并修改它是UB - >运行时错误.

如果要复制Hellostr使用的字符串的内容strcpy.

正如@LethalProgrammer所指出的那样:使用char[10]而不是char*允许你修改内容