sizeof 是一个物理层面的操作符,通常在编译期间确定,得到的是一个对象/类型在栈上的投影大小。
strlen 是一个逻辑层面的函数,运行时求值,得到的是一个 char[] 中第一个 '\0 ' 之前所有字符的数量。
(1)sizeof操作符的结果类型是size_t,它在头文件中的typedef是unsigned int类型,该类型保证能容纳实现所建立的最大对象的字节大小。
(2)sizeof是运算符,strlen是函数。
(3)sizeof可以用类型作参数,strlen只能用char*作参数,且必须是以“\0”结尾的。sizeof还可以用函数作参数。比如:
short f();
printf("%d\n",sizeof(f());
(4)strlen的结果要在运行的时候才能计算出来,计算字符串的长度,不是类型占内存的大小。
(5)数组作为参数传递给函数时,传递的是指针不是数组,传的是数组的首地址。