strlen
和 sizeof
是 C 语言中的两个不同的概念,它们用途和含义各不相同:
-
strlen:
strlen
是一个函数,定义在<string.h>
头文件中。- 它用于计算字符串的长度,即直到但不包括第一个空字符(
'\0'
)的字符数量。 strlen
只计算字符串的可见字符长度,不包括结尾的空字符。- 示例:如果有一个字符串
char s[] = "Hello";
,strlen(s)
将返回 5。
-
sizeof:
sizeof
是一个编译时运算符,不是函数。- 它用于计算变量或类型在内存中占用的字节数。
sizeof
返回的是整个分配的内存大小,包括结尾的空字符。- 示例:对于同一个字符串
char s[] = "Hello";
,sizeof(s)
将返回整个数组的大小,通常是 6,因为还包括了结尾的空字符'\0'
。
总结区别:
strlen
计算的是字符串中字符的数量,不包括结尾的空字符。sizeof
计算的是整个数据类型或变量在内存中占用的总字节数,包括所有字符和填充字节(如果有的话)。
在 C 语言中,strlen
只能用于以空字符结尾的字符串,而 sizeof
可以用于任何数据类型或对象。