关于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并不计算。

猜你喜欢

转载自www.cnblogs.com/LimorC/p/11208040.html