永发信息网

C语言 strcat连接两个char *报错,但两个char []可以,为什么

答案:3  悬赏:50  手机版
解决时间 2021-02-06 01:51
#include<iostream>
#include<string.h>
using namespace std;
bool check(char *str)
{
return true;
}
void main()
{
char *a="a"; //改成char a[]="a";
char *b="b"; //改成char b[]=“b”;
cout<<strcat(a,b)<<endl;
}
最佳答案
void main()
{
char *a="a";
char *b="b";
cout<<strcat(a,b)<<endl;
}

你这里a和b都指向常量字符串地址,常量字符串放在常量空间中,而常量字符串是不容许修改的,常量空间是只读的, 所以strcat(a,b)对a指向的常量空间地址进行写操作,当然会运行异常,

而改为a[],则不一样,数组保存在栈空间,栈空间的内存是可以读写的,当然你那样定义还是有可能运行异常,因为越界了,最好给a定义一个足够的空间,
例如char a[3]="a";
全部回答
你在连接(strcat)之前用malloc试试。写法:(char *)malloc(sizeof(char)*长度)
因为第一个是个常量指针,不允许你进行操作,第二个是个数组变量,允许你进行操作。你的两种方法,无论哪一种都存在越界。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我唱歌跟不上节奏,不是快就是慢了,什么原因
运用描写的方法写天
碧石菜场有中通快递吗
我在隔壁房间撸,别人听的见吗?
萌宠驿站怎么去啊,我要去那办事
芳芳彩妆坊在什么地方啊,我要过去处理事情
无忧无虑的意思是什么啊?知道的请说下!
一个双链DNA分子中,腺嘌呤占20%,则该DNA分
巴迪宠阁地址好找么,我有些事要过去
连云港酷比龙KTV消费价格
通州区骑岸镇计划生育中心服务站我想知道这个
娇车改装一键起动和一键升降玻璃线路怎么接
宽带电视怎么连接
下列各项,出现在元代的是A. 划全国为25个省
祀物的意思是什么啊?知道的请说下!
推荐资讯
云南省六库县人口普查
遂遂通网络公司地址在什么地方,我要处理点事
知味石锅拌饭韩式餐厅步行街店在哪里啊,我有
求解福库黄金麦饭石电饭锅的好处?
整宿的意思是什么啊?知道的请说下!
万州区土产进出口有限公司出口生漆厂我想知道
安利公司有那几个人做到了皇冠大使级别?
塞叟的意思是什么啊?知道的请说下!
石屏爱乐星怎么去啊,我要去那办事
【神采奕奕的反义词】神采奕奕的反义词
带乐和成字的诗有哪些?
4.02-3.5+0.98这道题怎样简便计算
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?