这里的问题是你尝试修改字符串文字( str 指向那个)和字符串文字是 不变 (即只读,不可修改)。
str
试图修改一些不变的东西是 未定义的行为 。未定义的行为可能 有时 似乎工作,但大多数时候它会导致运行时崩溃。
找到未定义行为(或其他可能不好的行为)的可能情况的好建议是启用更多警告。然后你应该得到一个关于将常量数组(所有字符串文字都是常量数组)赋值给非常量指针的警告。
char *str = "Hello, World!";
做了
char str[] = "Hello World!";