为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

C
废寝忘食陈同学 2019-08-19 16:00:21

#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

看来你知道“字符串”也就是“字符数组”;也知道数组在这里会隐式转型为指向其首元素的指针,那么:

代码中的 "asd" 和 "sad" 这样直接写出来的字符串叫作“字符串字面量”——是的,它也是字符数组——但它是不可修改的,一般存在于程序中的只读数据段中,修改它会导致未定义行为,通常就是崩溃出现“内存不能为 read”之类的提示...


解决办法是:不要用字符串字面量,而是用普通的字符数组,这就没有不能修改的问题了

char a[] = "asd";
char b[] = "sad";


查看完整回答
1 反对 回复 2019-08-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信