sizeof和strlen的本质区别

sizeof和strlen的区别

sizeof:计算的是分配空间的实际字节数
strlen是计算的空间中字符的个数(不包括‘\0’)
sizeof是运算符,可以以类型、函数、做参数 。strlen是函数,只能以char*(字符串)做参数。而且,要想得到的结果正确必须包含 ‘\0’。
sizeof是在编译的时候就将结果计算出来了是类型所占空间的字节数,所以以数组名做参数时计算的是整个数组的大小。而strlen是在运行的时候才开始计算结果,这是计算的结果不再是类型所占内存的大小,数组名就退化为指针了。
sizeof不能计算动态分配空间的大小。

sizeof和strlen的本质区别
sizeof和strlen的本质区别

由于strlen 和sizeof是无符号长整型,所以用到了%ld

sizeof和strlen的本质区别