首页 > 代码库 > sizeof与strlen的区别

sizeof与strlen的区别

(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在运行时才进行操作。