1、sizeof是运算符,而strlen是函数。
2、sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int。该类型保证能容纳所操作对象的最大字节大小。
3、sizeof可以用类型做参数,而strlen只能用char*做参数,且必须是以‘\0’结尾。
4、数组做sizeof参数不退化,而做strlen就退化成指针。
5、大部分编译程序在编译的时候就把sizeof处理过了,这就是sizeof(x)可以用来作为数组空间大小的原因。
char str[20]=“0123456789”;
a=strlen(str); // a=10,运行时确定
b=sizeof(str); //b=20,编译时确定,计算str数组的最大空间。
6 、 sizeof后面如果是类型则必须加括号,如果是变量名则可以不用加。
如: char c ;
sizeof c;// c为变量名则不用加括号
7、sizeof运算符不适用于计算对象是动态分配的空间以及外部数组。