(1)用strlen函数计算字符串的长度时,strlen的结果值是不包含’\0’的。而sizeof计算 字符串的长度时,它的结果值包括’\0’.
(2)sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。
(3)sizeof 是关键字不是函数,sizeof 在计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。当然它也可以计算函数大小,计算函数大小时可以省略括号,其计算函数的大小为函数返回值的类型所占字节数。无返回值得函数,默认大小为1个字节。
(4)对一个变量进行sizeof运算和对该变量所在的地址进行sizeof运算所得结果相同。
int i=0;
Sizeof(i)=4,sizeof(&i)=4
(5)sizeof()和初不初始化,没有关系;strlen() 和初始化有关。
(6)Sizeof运算结果是操作数所占的内存空间的字节数,strlen返回的是以’\0’结束符结束的字符串的长度。
char str[20]="0123456789";
int a=sizeof(str) //a=20;
int b=strlen(str) //b=10;
(7)sizeof是在编译时就进行计算,strlen在运行时才进行操作。
sizeof与strlen的区别,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012041952/article/details/33292563