C语言,给指针字符串单个字符赋值,可以实现吗?

#include <stdio.h>

void main(){
char *str = "I love China!";
str[7]='j';
printf("%s \n",str);
}

像这样,把第8个字符改成别的,这样不行,运行报错,什么vio access的。
有方法能改吗。

char *str = "I love China!";修改为

char str[] = "I love China!";

使用字符数组而不是字符指针。因为上一种方式str指针指向一个常量字符串"I love China!"。追问

噢我懂了。。就是说用字符指针的话,是创建了一个I love China!的字符常量,
然后用指针指向了它,但是这个字符常量是不可修改的。
是这样吗。

追答

是的。
而使用字符数组的话,则使用这个字符串来初始化字符数组,字符数组里的值是复制过来的,则可以修改。

温馨提示:答案为网友推荐,仅供参考