区别如下
1、sizeof 是操作符,strlen 是函数。
2、sizeof操作符的结果类型是size_t,它在头文件typedef为unsigned int 类型,该类型保证能容纳所建立的最大对象的字节大小。
3、sizeof可以用类型做参数,strlen 只能用char * 做参数,并且必须以“\0”结尾。
4、数组做 sizeof 的参数不退化,要是传递给strlen 则退化为指针。
5、大部分编译程序在编译时就已经计算 sizeof ,这就是sizeof(x)可以定义数组维度的原因。strlen 的结果只能在运行时得出,用来计算字符串长度,不是类型占内存的大小。
6、sizeof 后如果是类型,必须加();如果是变量名则可以不用加。原因为sizeof是操作符。
7、看下面的程序
char str[20] = "0123456789";
int a = strlen(str);
int a = sizeof(str);
strlen 计算的是字符串长度,结果是 10,
sizeof则计算的是str[20]所占空间的长度,为20。