社区
C++ 语言
帖子详情
明天结贴,不分先后,谁答得全面给50分
darkstar21cn
2005-09-03 04:35:09
#include <string>
using std::string;
void func (char* const in);
int main ()
{
string str = "dklfjdslkfj";
func (str.c_str ());
return 0;
}
void func (char* const in)
{
}
问题自己找。。。。。
...全文
458
15
打赏
收藏
明天结贴,不分先后,谁答得全面给50分
#include using std::string; void func (char* const in); int main () { string str = "dklfjdslkfj"; func (str.c_str ()); return 0; } void func (char* const in) { } 问题自己找。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yhbttfile
2005-09-04
打赏
举报
回复
的确不值50分。~~
lzp729
2005-09-04
打赏
举报
回复
呵,这种问题也值50分?
jixingzhong
2005-09-04
打赏
举报
回复
const问题,改成void func (const char* in);
Jagen在路上
2005-09-04
打赏
举报
回复
void func (char* const in)
{
}
这里的参数没有必要这么声明,而且也不对。
根据就近匹配原则,const修饰了指针,说明指针不能修改,但是指针指向的数据可以被修改。但是这是属于指针的值传递,本来就修改不了指针的,在此处无任何意义。
然而string.c_str()返回的是const char*类型,这里的const修饰的是char,表明数据不可修改。那么自然const数据不能传递给mutable数据的,因此楼主的代码也是错误的。
由此可见,即多此一举又是错误。
darkstar21cn
2005-09-04
打赏
举报
回复
结贴。本来虚无说的不错,可惜没说完全,相比v41dugu(一步一生) 要全面一些,所以50分就给v41dugu(一步一生) 了。
另:
回复人: lyclowlevel(蓬蒿人) ( ) 信誉:100 2005-09-03 20:54:00 得分: 0
就是const char *不能赋值给char *或char const *
也许你在这也犯了个错误。还是那句“问题自己找”
补充说明:
纯粹灌水者无分
blocked_a_day
2005-09-04
打赏
举报
回复
好贴!
何哀何欢
2005-09-03
打赏
举报
回复
分多就很刁阿?还 “问题自己找”。。。
对了,另外的50分给谁?
lyclowlevel
2005-09-03
打赏
举报
回复
就是const char *不能赋值给char *或char const *
v41dugu
2005-09-03
打赏
举报
回复
对不起,我再补充一点。
如果这个问题是反过来的,就是 将char *const 指针(这里我们叫它p1)传给cosnt char*指针p2.
也就相当于p2=p1;他们同时指向了p1指向的那块内存,这样就没有错。因为p1是指向的那段内存的位置不能改变,而p2是指向的那段内存中的值不能变(也就是其本身可以变,就是它可以不指向这段内存了)。p2如果变化了不会使任何东西产生错误。也就是只要被要求为不能改变的东西不被改变就可以。这里p1指向的地址不能改变,而p2的变化并不会使p1指向的地址变化,所以没错。
而楼主的情况相当于这里的 p1=p2;他们同时指向了p2指向的内存。但是这块内存中的值被定义为不可改变的。所以出错。把两种情况对照起来理解
mituzhishi
2005-09-03
打赏
举报
回复
问题很明显,正如上面所讲的,改正如下:
#include <string>
using std::string;
void func (const char* in);
int main ()
{
string str = "dklfjdslkfj";
func (str.c_str ());
return 0;
}
void func (const char* in)
{
}
v41dugu
2005-09-03
打赏
举报
回复
问题应该就是那个const与非const的问题了
c_str()返回的是一个const char *类型的指针。而你把const char *指针传给char *const指针 当然错了哦
你要搞清楚在指针上面出现的const问题 ,只要你注意不能改变其原来的性质就行了
比如:const int a=1;int *p=&a;
这里就不对了。因为我们先定义了const int型的a.就表明了a 不能被改变,但是你用一个一般的指针p来指向a 的话,虽然不能通过变量名来改变a的值,但是却可以通过*p来改变a的值,所以这样是行不同的。
同样的在你的这个问题中.c_str()返回的const char *指针,而char *const指针是指针本身不能变化,而const char *指针本身是可以变化的,只是不能改变其指向的变量。所以如果传递成功的话,
那么那个 char *const指针就可以改变其指向的对象,但是const char *又说明了其指向对象是不可变的,所以出错
foochow
2005-09-03
打赏
举报
回复
template<class E,
class T = char_traits<E>,
class A = allocator<T> >
class basic_string
{
public:
.........
const E *c_str() const;
.......
protected:
A allocator;
};
一个const变量是不能赋值给一个非const变量的(const char*---->char*)......
别的不知道了,吃饭去....
antijpn
2005-09-03
打赏
举报
回复
是const char*而不是char* const,这个在C++里面肯定是不允许的,C里面默认最高应该是警告
其他的暂时没看出来……
zhouhuahai
2005-09-03
打赏
举报
回复
但是当你把const char *传给 char *const时,按照参数声明来说:
它会认为可以修改指针所指向的内容,这和const char *相矛盾.因此编译器拒绝接受.
zhouhuahai
2005-09-03
打赏
举报
回复
string( basic_string<char> )的c_str()的返回类型是: const char *
而你的func中的参数为char *const类型, 造成了类型不匹配的错误.
要改的话, 应该把func中的参数类型改成:
const char * 即:
void func (const char* in);
顺带提一下:改成这样之后,倒可以把一个char *传递进去.因为参数中的const只是一个指定,是说明在此函数中,不能改动参数(指针)所指向的内容
渗透测试工具之——启
明天
镜BS版本概述
启
明天
镜BS版本 介绍 与绿盟的WVSS是国内很少的web与系统都可以扫的扫描器 还带配置核查扫描 试用免费三个月(只支持
50
个ip地址) 可以通过修改虚拟机时间或者重置虚拟机无限使用 安装 一直下一步 用户名venus密码venus/venustech60 系统设置 立刻升级 出现的问题 1.安装提示80端口被占用 打开IIS 网站 找到占用端口的...
股票做T是什么意思?今天买
明天
卖能赚钱吗?
做T,简单说就是"今天买
明天
卖"的短线操作。这个"T"代表的是"T+1"交易制度中的T日(交易日)。A股实行T+1制度,今天买的股票,最早
明天
才能卖出。但很多人不知道,做T其实
分
两种:正T和反T。正T是先买后卖,比如今天低位买入,
明天
冲高卖出;反T则是先卖后买,比如今天高点卖出持仓,
明天
低点接回。两种方式都能赚取差价。
《猴子速答卡》模板:五类问题快速响应指南
通过将管理经验转化为“即取即用”的卡片工具,管理者可在碎片化场景中持续传递“责任归属”与“工具赋能”的双重信号,最终实现从“事事过问”到“规则自运行”的管理跃迁。建议将速答卡打印放置于工位,或设置为手机壁纸,形成视觉化管理提醒。通过会议记录、IM聊天统计,提取团队最常见的5-8类问题(如“需求变更”“资源冲突”“客户投诉”)。
倒计时
50
天
今天,2010年10月2日。
距离复赛只有
50
天了呢!
明天
起就要停课了...
赶紧抓紧了。
初中数学
分
几个模块_初中数学从65
分
到115
分
,高手是这样提
分
的!速看!
这是一个初中数学提
分
50
分
的同学通过自己的教训总结出来的数学学习经验,今天小编
分
享出来,希望可以帮到大家。提高数学计算正确率的窍门计算对于初中数学来说是个很重要的部
分
,至于如何提高中考数学的计算的正确率,这里提供四个方面,大家可以自查,看哪些方面出现了问题。1.要对计算引起足够的重视在计算时或过于自信,或注意力不集中,导致出错是很多同学的通病。其实,计算正确并不是一件很容易的事。例如计算...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章