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

时间:2017-06-20 07:56:22

标签: 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;
}

1 个答案:

答案 0 :(得分:7)

指向str = "Hello";时,您没有将"Hello"复制到str指向的地址。相反,您将str指向字符串文字,并将其修改为UB - &gt;运行时错误。

如果您要将字符串Hello的内容复制到str,请使用strcpy

正如@LethalProgrammer所述:使用char[10]代替char*可以修改内容