0
点赞
收藏
分享

微信扫一扫

【C++从入门到熟练练习题】 第五讲 strlen和sizeof的区别详解

 



【C++从入门到熟练练习题】第五讲

strlen和sizeof的区别详解

【C++从入门到熟练练习题】 第五讲 strlen和sizeof的区别详解_字符串


                   前言

1.上节课回顾


上一次给大家讲了C++常量与作用域,因为代码比较简单并且代码不唯一,就不给大家统一答案啦。


今天主要给大家讲的是sizeof运算符和strlen的区别。


为了让大家能够更加清晰的了解其区别,在这里不讲废话,通过不同的实例来给大家说明。



【C++从入门到熟练练习题】 第五讲 strlen和sizeof的区别详解_字符串


            一、作用介绍


不管是strlen还是sizeof,他们都是用于计算长度的,strlen计算的是字符串的长度,sizeof计算的是字符所占空间大小。




                    二、区别

1.字符串不设置长度


字符串不设定长度时,定义完字符串以后,字符串结尾会自动添加一个转义字符:\0 来表示字符串的结尾,所以利用sizeof计算字符串长度时,需要在字符串本来的长度上+1。

     strlen则不用。

     以如下代码为例:

#include<iostream>

using namespace std;

void main()
{

char a[] = "abcd";

cout << sizeof(a) << endl;

cout << strlen(a) << endl;

}

输出结果为:
5
4
请按任意键继续...

字符串设定长度时,sizeof计算的是所占空间大小,不管占的空间是否有元素,都会计算在内,

    所以利用sizeof计算字符串长度时,是字符串定义的长度。与字符串所含字符数无关。


strlen求得的是字符串长度,与所占空间无关。所以当含有4个字符(abcd)时,输出的就是4。

       以如下代码为例:

" style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; white-space: pre; overflow: auto; border-radius: 3px; border-color: rgb(204, 204, 204); border-style: solid; border-width: 1px; display: block !important; padding: 0.5em; color: rgb(51, 51, 51); background: rgb(248, 248, 248) none repeat scroll 0% 0%; -moz-text-size-adjust: none;">
using namespace std;

void main()
{

char a[10] = "abcd";

cout << sizeof(a) << endl;

cout << strlen(a) << endl;

}

输出结果为:
10

4

请按任意键继续...

#include<iostream>

using namespace std;

void main() {

char a[10] = "ab\0cd";

cout << sizeof(a) << endl;

cout << strlen(a) << endl;

}

输出结果为:
10
2
请按任意键继续...



【C++从入门到熟练练习题】 第五讲 strlen和sizeof的区别详解_字符串


                  三、注意点


利用这两个求字符串长度时,一定要注意转义字符,转义字符是一个字符。

     转义字符虽然只有几个有定义(详见:转义字符)

    但是只要你在字符串中使用 “\”,那程序就会默认“\”和后面的一个字符构成转义字符,不会考虑这个转义字符是否有含义。



                   四、思考题

     分析下列字符串用sizeof和strlen求得的字符串长度:

char a[] = "ab\0cd\5\\";

char a[10] = "ab\0cd\5\\";

char a[] = "ab\1cd\5\\";



编辑人:石玉秀

审核人:水亦心


【C++从入门到熟练练习题】 第五讲 strlen和sizeof的区别详解_字符串_04



举报

相关推荐

0 条评论