c - 为什么我可以使用 CLion 修改字符串文字?
问题描述
#include <stdio.h>
int main() {
char *name = "Thank you";
name[0] = 'a';
printf("%s", name);
}
它工作正常:
我的理解是这name[0] = 'a'
应该行不通。
那么它为什么有效呢?
解决方案
C 标准对尝试修改字符串文字没有任何限制。但是,如果您尝试修改字符串文字,结果是未定义的行为。
引用C11
,第 6.4.5 章(字符串文字)/P7
[...] 如果程序尝试修改这样的数组,则行为未定义。
您认为程序允许您修改字符串文字的内容这一事实是 UB 的众多结果之一。
推荐阅读
- google-sheets - 如何根据日期查找人数
- laravel - 如何在 app.js 之外使用 VueJs 组件
- python - 将熊猫数据框转换为字典列表
- flutter - 有没有办法在相机移动结束后运行功能?(地图框)
- python - 如何使用 django 加载博客网站的文章页面?
- flutter - 全球密钥
().currentState.context 在推送时返回 null - python - 在 Python 中规范化 JSON
- prompt-toolkit - ipykernel 和 PyGrid 域之间的 prompt_toolkit 版本冲突
- python - 如何在 django CBV 中使用 CreateView 创建对象后获取对象
- css - SVG currentColor 在 GitHub README 中不起作用?