关于C++中strlen(str)和sizeof(str)

Posted limorc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C++中strlen(str)和sizeof(str)相关的知识,希望对你有一定的参考价值。

首先我们来看一段测试吧

#include"stdio.h"

main()
    char str[10] = "I am Limor宸";
    printf("%d %d",sizeof(str),strlen(str));

输出的结果是:

技术图片

从结果中我们可以看出sizeof(str)输出的是10而strlen(str)输出的结果是11那么是为什么呢?

 我们来看看sizeof和strlen的区别

  strlen在计算字符串长度的时候,是以‘\\0’为字符串结束的标志。

  sizeof是以分类的数组的实际所占的内存空间大小来计算长度的。

我们再来看看如果给定的分配空间比实际占用空间长的情况:

#include"stdio.h"

main()
    char str[50] = "I am Limor宸";
    printf("%d %d",sizeof(str),strlen(str));

这时候我给str这个字符数组初始分配了50个空间,但是只占用了11个空间。

技术图片

 

结果的话sizeof计算出来是50为str字符串数组所占用的实际空间

而strlen计算的结果是12,在后面没有被声明的空间没有被计算。

由此可见sizeof计算的是该数组占用的空间大小,strlen计算的是字符串的长度并吧‘\\0‘结尾符也算作一个单位但是null并不计算。

以上是关于关于C++中strlen(str)和sizeof(str)的主要内容,如果未能解决你的问题,请参考以下文章

sizeof和strlen

C++ 关于size()和sizeof()

c strlen和sizeof详解

关于sizeof和strlen的一些题目解析

关于strlen和sizeof的使用

sizeof与strlen的区别