修改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”,因此很明显更改此字符串可能会导致未指定的行为。