sizeof适用场合:
- 与存储系统和I/O系统的例程进行通信;
- 查看某种类型在内存中占用的字节;
- 动态分配对象时,让系统知道分配多少内存;
- 由于操作数的字节数在实现时可能出现变化,因此建议在涉及操作数大小时使用sizeof代替常量计算;
- 如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。
sizeof和strlen的区别具体如下:
- sizeof是关键字,strlen是函数;
- sizeof可以将数据类型作为参数,而strlen的参数只能是char*,且必须以“\0”结尾;
- 传递给sizeof的数组不退化,传递给strlen的数组退化为指针;
- sizeof在编译时已经进行计算,返回的是类型或变量的长度,而strlen在运行时才进行计算,返回的是字符串的长度,而不是占用内存的大小;
- sizeof操作符结果是size_t,保证能容纳实现所建立的最大对象的字节大小;
- sizeof之后如果是类型必须加括号,如果是变量则不需要加括号;
- sizeof不能计算动态分配或外部数组尺寸;
- sizeof操作符不能用于函数类型,不完全类型或位字段