修改C字符串:访问冲突

可能重复:
为什么简单的C代码会收到分段错误?
修改C字符串常量?

为什么此代码会产生访问冲突?

int main() { char* myString = "5"; *myString = 'e'; // Crash return 0; } 

* mystring显然指向只读静态内存。 C编译器可能会在只读存储中分配字符串文字,这些字符串文字可能无法在运行时写入。

字符串文字被认为是常量。

编写代码的正确方法是:

 const char* myString = "5"; *myString = 'e'; // Crash return 0; 

在这种情况下,您应该始终考虑添加“const”,因此很明显更改此字符串可能会导致未指定的行为。