我试图了解无法在 C 中修改字符串文字的原因。
为什么以下在 C 中是非法的?
char* p = "abc";
*p = 'd';
Run Code Online (Sandbox Code Playgroud)
字符串文字被指定为不可修改。该规范允许实现共享具有相同文本的字符串副本,将字符串文字放在只读内存中,并执行某些优化。然而,字符串文字没有 const char 的类型数组,以避免指针类型检查的问题,尤其是库函数,因为将指向 const char 的指针分配给指向 char 的普通指针是无效的。那些坚持字符串文字应该是可修改的委员会成员满足于将这种做法指定为一个通用扩展(见 F.5.5)。