猿问
下载APP

C语言中关于字符串指针的问题?

#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的内容,请问为什么一直出错?好像提示是内存出问题但我不明白


废寝忘食陈同学
浏览 1489回答 1
1回答

onemoo

看来你知道“字符串”也就是“字符数组”;也知道数组在这里会隐式转型为指向其首元素的指针,那么:代码中的 "asd" 和 "sad" 这样直接写出来的字符串叫作“字符串字面量”——是的,它也是字符数组——但它是不可修改的,一般存在于程序中的只读数据段中,修改它会导致未定义行为,通常就是崩溃出现“内存不能为 read”之类的提示...解决办法是:不要用字符串字面量,而是用普通的字符数组,这就没有不能修改的问题了char a[] = "asd"; char b[] = "sad";
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答