#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的内容,请问为什么一直出错?好像提示是内存出问题但我不明白
看来你知道“字符串”也就是“字符数组”;也知道数组在这里会隐式转型为指向其首元素的指针,那么:
代码中的 "asd" 和 "sad" 这样直接写出来的字符串叫作“字符串字面量”——是的,它也是字符数组——但它是不可修改的,一般存在于程序中的只读数据段中,修改它会导致未定义行为,通常就是崩溃出现“内存不能为 read”之类的提示...
解决办法是:不要用字符串字面量,而是用普通的字符数组,这就没有不能修改的问题了
char a[] = "asd"; char b[] = "sad";
举报