我的c++测试程序老是段错误 为什么 求大神解答 20

#include<iostream>usingnamespacestd;intprint(inta,intb);//intprint(inta,charb);intpri... #include <iostream>

using namespace std;

int print(int a, int b);
// int print(int a, char b);
int print(char a, int b);
int main()
{
char* trip =const_cast<char*>( "fdsf");
trip[1]='f'; //有了这行 编译的时候没报错,运行的时候就报段错误
cout << trip[1] << endl;
cout << print (3 ,4.888) << endl;
}

int print(int a, int b)
{
return a;
}
// int print(int a, char b)
// {
// return a;
// }
int print(char a, int b)
{
return b;
}
展开
 我来答
匿名用户
2014-12-08
展开全部
const_cast只能改变指针的const属性,而不能改变或者去掉本身的const属性。
你的指针指向了"fdsf",修改的还是"fdsf",根据上面的结论,"fdsf"仍然是const的没有改变,所以修改出现运行时错误,编译阶段不会报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水主沉浮6s
2014-12-08 · TA获得超过349个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:206万
展开全部
你的trip指针指向的是常量字符串,不能用trip[1]来修改内存中的值。
如果是
char* trip = new char[5]; //内存在堆区

或者
char trip[]={"fdsf"}; //内存在栈区

这样定义的trip,就可以那样修改。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式