指针和字符串导致分段错误

可能重复:
char a [] =“string”有什么区别; 和char * p =“string”;

char *str = "Hello"; printf("%c",++*str); 

这使用gcc在linux上产生分段错误。 第一个语句改为as的那一刻

 char str[10] = "Hello"; 

有用。 可能是什么原因?

尝试修改字符串文字是未定义的行为。

编译器可以将它放在只读存储器中(就像你的情况一样)。 尝试修改只读内存可能会触发段错误。

这句话char *str = "Hello"; 在RO-section中存储字符串“Hello”,并将RO-section(其中存储“Hello”)区域的地址分配给str。 存储在RO部分中的数据无法修改,因此您将获得段错误。

 char str[10] = "Hello"; 

也是错的。 你应该写

 char str[10]; strncpy(str,"Hello",sizeof(str));