为什么我不能通过第11行的赋值语句将第0个索引处的字符替换为第1个索引处的字符?

时间:2018-09-16 12:00:59

标签: c

#include<stdio.h>
void main()
{
char d;
char *r="Helloo";
printf("%s\n",r);

d=*(r+1);
printf("%c",d);

*(r+0)=d;

printf("%s\n",r);

}
  

当我将字符串存储在字符数组中时,此方法工作正常,但为什么现在不起作用

1 个答案:

答案 0 :(得分:2)

char *r="Helloo";

您已将指针r分配给字符串文字。字符串文字应视为不可变的。任何试图修改它的尝试都会导致不确定的行为(N1570,第6.4.5 / 7节)。

使用

char r[]="Helloo";

您已将字符串存储在可以修改的数组中,从而可以按预期工作。