我想在分配动态内存后更改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;
}
答案 0 :(得分:7)
指向str = "Hello";
时,您没有将"Hello"
复制到str
指向的地址。相反,您将str
指向字符串文字,并将其修改为UB - &gt;运行时错误。
如果您要将字符串Hello
的内容复制到str
,请使用strcpy
。
正如@LethalProgrammer所述:使用char[10]
代替char*
可以修改内容