注册 登录
编程论坛 C++教室

新手求指导 标题要长。。。。。。。。。。。。

rescuemem 发布于 2012-03-10 11:44, 410 次点击
char *word2;
word2=new char[10];
cout<<strlen(word2)<<endl;
为什么输出是17
不是应该分配10个字节的么

 还有就是单目运算符重载的时候
char & operator[](int m)
{}
为什么要有个&,什么作用啊
求个高手指导啊
3 回复
#2
非死亡!2012-03-10 23:18
strlen()他是个扫描函数.从内存的开始,一直扫描到'\n'为止.(我忘了好像是这个).他的本质是求内存的大小.
char a[20]="012"   因为这是ascii码,占一个字节,所以strlen(a)是3;
char a[20]="我爱你" 因为中文是宽字节,占两个字节,所以stelen(a)是6;
如果是ascii码和中文的混合,就加起来,会了吧.
记住,strlen()本质是求内存的大小的,不是有多少个字符.
#3
gyb3572012-03-11 13:22
观摩中.....
#4
BianChengNan2012-03-12 09:40
strlen是找到第一个'\0'就结束,你new了一个数组,但是没有赋值,所以导致了运行结果的不确定性。归根结底你的字符串要以'\0'结束,这样才能用strlen
1