sizeof和strlen的区别

在我们平时写代码的过程中,我们会经常用到sizeof和strlen,那么他们到底有什么区别呢,我简单总结了以下几点:
(1)sizeof是运算符,strlen是函数
(2)sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以”\0”结尾的。
sizeof和strlen的区别
(3)strlen 测量的是字符的实际长度,以’\0’ 结束。而sizeof 测量的是字符的分配大小。
sizeof和strlen的区别
(4)strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。
(5)sizeof 如果计算类型的大小时要加(),即sizeof(int);如果是变量名可以不加()
sizeof和strlen的区别
(6)数组做sizeof的参数不退化,传递给strlen就退化为指针了。
(7)当使用了于一个结构类型时或变量, sizeof 返回实际的大小,当使用一静态地空间数组, sizeof 归还全部数组的尺寸。
(8)sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
(9)可以用sizeof(arr)/sizeof(arr[0])求数组元素的个数。