c++ strcpy()函数

为什么strcpy()时char*a[]="ABC";charb[]="D";strcpy(a,b);//这里运行时会出错啊?我打错了程序上char*a... 为什么strcpy()时
char * a[]="ABC";
char b[]="D";
strcpy(a,b);//这里
运行时会出错啊?
我打错了程序上char *a
展开
 我来答
宜格陀迪
2019-12-02 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:630万
展开全部
因为x只能存放10个字符,但你的000已经有10个,连同结尾的'\0',一共11个字符,因此溢出了或者说数组越界了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2013-07-31 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2892万
展开全部
第一个声明就错误了

指针字符串是指针字符串

字符串数组是字符串数组

而且还有 指针字符串内容是不能被修改的

即使是

char * a="ABC";
char b[]="D";
strcpy(a,b);//这里

也是编译没错 运行出错
更多追问追答
追问
我打错了 程序上没错是char*a 可是为什么可以 a[2]='A' 这样修改呢?
追答
一个是指针数组 不能修改 

一个是字符串数组 你说的 a[2] ='A' 你去看看声明

是字符串数组
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友05ca588
2013-07-31 · 超过19用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:49.6万
展开全部
去掉数组a[]前边的*号,是字符数组,可以进行strcpy。去掉a[]后边的[] 是字符串指针,为常量,不能作为strcpy的第一个参数。有*有[]是字符串数组,,同意楼上回答。
追问
我打错了 程序上市char* a
追答
这样定义的就是指向字符串常量的指针,指向静态存储空间,不能被修改,既不能作为strcp的第一个参数,而如果是用[]定义的那就是在栈空间,是动态的,可以修改的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-31
展开全部
"ABC"存在静态存储空间,不能修改的。如果你改成char a[],就是栈空间,应该就可以改了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nl900324
2013-07-31 · 超过16用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:39.7万
展开全部
显然不对啊,你这里定义的a是一个指向字符常量指针的指针,你要用strcpy(*a,b)
追问
我打错了 程序上市char* a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式