| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:新手求指导 标题要长。。。。。。。。。。。。
只看楼主 加入收藏
rescuemem
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
新手求指导 标题要长。。。。。。。。。。。。
char *word2;
word2=new char[10];
cout<<strlen(word2)<<endl;
为什么输出是17
不是应该分配10个字节的么

 还有就是单目运算符重载的时候
char & operator[](int m)
{}
为什么要有个&,什么作用啊
求个高手指导啊
2012-03-10 11:44
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:7 
strlen()他是个扫描函数.从内存的开始,一直扫描到'\n'为止.(我忘了好像是这个).他的本质是求内存的大小.
char a[20]="012"   因为这是ascii码,占一个字节,所以strlen(a)是3;
char a[20]="我爱你" 因为中文是宽字节,占两个字节,所以stelen(a)是6;
如果是ascii码和中文的混合,就加起来,会了吧.
记住,strlen()本质是求内存的大小的,不是有多少个字符.

能力 技巧
2012-03-10 23:18
gyb357
Rank: 1
等 级:新手上路
帖 子:1
专家分:7
注 册:2012-3-10
收藏
得分:7 
观摩中.....
2012-03-11 13:22
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:7 
strlen是找到第一个'\0'就结束,你new了一个数组,但是没有赋值,所以导致了运行结果的不确定性。归根结底你的字符串要以'\0'结束,这样才能用strlen

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-12 09:40
快速回复:新手求指导 标题要长。。。。。。。。。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015136 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved