c - 为什么我不能在 c 中修改字符串文字?
问题描述
我试图了解无法在 C 中修改字符串文字的原因。
为什么以下在 C 中是非法的?
char* p = "abc";
*p = 'd';
解决方案
字符串文字被指定为不可修改。该规范允许实现共享具有相同文本的字符串副本,将字符串文字放置在只读内存中,并执行某些优化。但是,字符串文字没有 const char 的类型数组,为了避免指针类型检查的问题,特别是对于库函数,因为将指向 const char 的指针分配给指向 char 的普通指针是无效的。那些坚持字符串文字应该是可修改的委员会成员满足于将这种做法指定为一个公共扩展(参见 F.5.5)。
推荐阅读
- javascript - 将类组件转换为功能组件
- javascript - 密集工作javascript,浏览器冻结
- java - 在活动之间导航时如何在不加载数据的情况下保留数据
- php - 使用promise在nodejs中进行异步调用
- c# - 如何在 C# 中处理 POST 请求
- powershell - 如何让我的所有 powershell 脚本在没有权限问题的情况下运行?
- python - Python/Django 用户详细信息视图
- java - 如何在 ObjectMapper 上为 Jackson 添加 Jdk8Module
- objective-c - 在 Cocoa 中,NSDateFormatter 提供了一个 dateFromString: 方法,用于将字符串解析为日期对象。NSByteCountFormatter 有什么类似的吗?
- java - 如何使用 Netbeans 11 正确创建资源目录