1. strlen:
- strlen 是一个函数,用于计算以 null 终止的字符串的实际长度,即字符数(不包括 null 终止符)。
- 它的原型是 size_t strlen(const char *str);。
- strlen 函数遍历字符串直到遇到 null 终止符 `\0`,然后返回在此之前遍历的字符数。
- 例如,对于字符串 "hello",strlen 返回 5,因为有 5 个字符,但不包括 null 终止符。
2. sizeof:
- sizeof 是一个操作符,用于获取数据类型或变量的字节大小。
- 它的形式是 sizeof(type_or_variable),其中 type_or_variable 是数据类型或变量的名称。
- sizeof 在编译时计算,返回数据类型或变量占用的字节数。
- 例如,sizeof(int) 返回整数类型的字节大小,通常是 4 字节,而 sizeof(char) 返回字符类型的字节大小,通常是 1 字节。
sizeof
注意:
在C语言中,
sizeof("abc")
和sizeof("abc\0")
的值通常是不同的。这是因为字符串字面值
"abc"
包含了字符 'a'、'b' 和 'c',但不包含空字符('\0')。因此,
sizeof("abc")
通常等于 4(3个字符加上一个空字符)而
sizeof("abc\0")
通常等于 5(3个字符加上两个空字符,一个显式的 '\0' 和一个隐式的字符串结尾空字符)。
在处理字符串时,通常使用 strlen 来获取字符串的长度,因为它可以精确地计算字符串中的字符数。而在需要获取数据类型或变量的大小时,可以使用 sizeof。
需要注意的是,当处理字符串时,特别是在处理指针和动态分配的内存时,要小心使用 strlen,以确保不会访问到超出字符串边界的内存。