首先我们来看一段测试吧
#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并不计算。
原文地址:https://www.cnblogs.com/LimorC/p/11208040.html
时间: 2024-09-29 13:55:12