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

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

TA贡献883条经验 获得超454个赞

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

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


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

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


查看完整回答
1 反对 回复 2019-08-19
  • 1 回答
  • 0 关注
  • 2843 浏览

添加回答

举报

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