如何使用指针更改字符串中的字符?

jac*_*ack 3 c pointers

我有这个代码的麻烦

int main() {
     char *My_St = "abcdef";
     *(My_St+1)='+';
     printf("%s\n",My_St);
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

我构建了这个代码并且没有错误,但是当我尝试运行它时,它会抛出一个分段错误,有人会告诉我什么错

Vin*_*ura 6

你不能因为你试图修改const数据.

将其更改为:

char My_St[] = "abcdef";
Run Code Online (Sandbox Code Playgroud)

然后你就可以改变它了.

想想你在做什么,你声明的指针是指向"abcdef".它是一个指针,而不是一个字符数组."abcdef"我的意思是,在.text你的计划领域,你的生活在农场里,这是不可改变的.

当你按照我展示的方式进行操作时,你告诉编译器:我正在声明这个数组,它将包含所需数量的字符,"abcdef"并且,就像你在那里一样,复制"abcdef"到它.