c - 我如何在C中复制到字符串文字
问题描述
char temp1[4] = "abc";
char *temp2 = "123";
strcpy(temp1,temp2);
如果我想将字符串文字复制到数组中,效果很好,但如果我以相反的方式进行操作,则会出现错误:
char temp1[4] = "abc";
char *temp2 = "123";
strcpy(temp2,temp1);
编译器的反馈是“分段错误”。
那么有什么区别呢?无论如何将字符串复制到字符串文字?
谢谢。
解决方案
您需要了解这两行之间的细微差别
char temp1[4] = "abc";
char *temp2 = "123";
第一个创建一个 4 字符变量并将“abc\0”复制到它。
如果你愿意,你可以覆盖它。temp1[0] = 'x'
例如,如果你愿意,你可以这样做。
第二个创建一个指向常量文字“123\0”的指针。
您不能覆盖它,它通常在内存中被声明为对操作系统只读。
推荐阅读
- tensorflow - autokeras 模型转换为 tensorflowjs 模型
- python - 列表理解而不是嵌套的 for 循环
- monitoring - 如何显示前 K 个节点 wrt CPU 使用率?
- git - 使用 Github Actions 持续部署到 Heroku
- html - Gatsby 按钮 onClick 使用链接功能
- java - 将 onItemClickListener 放在 AutoCompleteTextView 下拉列表中并通过获取位置传递意图但失败
- javascript - Oribt 控件不起作用,鼠标无法移动场景
- android-popupwindow - 在另一个视图下方显示 Android 弹出窗口
- c# - WPF DataGrid 标题文本背景填充
- javascript - JSON.filter(...).then 不是函数(Javascript)