#include <stdio.h>void copy(char *p,char *q){ while(*p++=*q++); printf("%s",p);}int main(){ char *a="asd"; char *b="sad"; copy(a,b); return 0;}我想进行字符串复制,就是把a给复制成b的内容,请问为什么一直出错?好像提示是内存出问题但我不明白
1 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
看来你知道“字符串”也就是“字符数组”;也知道数组在这里会隐式转型为指向其首元素的指针,那么:
代码中的 "asd" 和 "sad" 这样直接写出来的字符串叫作“字符串字面量”——是的,它也是字符数组——但它是不可修改的,一般存在于程序中的只读数据段中,修改它会导致未定义行为,通常就是崩溃出现“内存不能为 read”之类的提示...
解决办法是:不要用字符串字面量,而是用普通的字符数组,这就没有不能修改的问题了
char a[] = "asd"; char b[] = "sad";
- 1 回答
- 0 关注
- 2843 浏览
添加回答
举报
0/150
提交
取消