码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-07-18 16:40:00      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:结束   测试   bsp   div   code   strlen   include   pre   color   

首先我们来看一段测试吧

#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)

标签:结束   测试   bsp   div   code   strlen   include   pre   color   

原文地址:https://www.cnblogs.com/LimorC/p/11208040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!