sizeof 是一个运算符,且是单目运算符,用于计算操作数类型占用的字节数(即以字节为单位返回操作数的大小)。1个字节被定义为char类型所占用的空间的大小。
操作数可以是一个具体的对象(比如一个变量),也可以是一个类型(如int)。
它的一般格式是:sizeof(操作数)
PS:操作数若是一个类型,它必须要写在括号里,其他情况操作数可以不用括号括起来。建议使用括号更保险。
例如:sizeof(int)=4(在32位系统中)
或是sizeof int =4
sizeof float =4
sizeof(double)=8
sizeof('\100')=1
sizeof("hello")=6(字符串"hello"还包含一个结束字符'\0')
strlen 是一个函数,用来求字符串的长度,该函数的功能是返回字符串的长度。字符串的长度是指字符串中有效的字符的个数,不包含结束符'\0'在内。
例如求上面字符串"hello"的长度strlen("hello")=5,而不是6,因为strlen 只计算'\0'之前的字符串长度。
例如:char s1[ ]="dog",s2[ ]="today\0 is \0 monday";
printf("%d %d \n",strlen(s1),strlen(s2));
输出结果为3 5,因为在s2中有多个'\0',strlen函数只返回第一个'\0'之前的字符个数。
由此可知 sizeof 与 strlen 的区别在计算字符串长度时sizeof 是计算整个字符串的长度,包括'\0'在内,而strlen 在计算字符串长度时只是求在遇到的第一个结束符'\0'之前的有效字符长度。