| 名字 | 功能 | 返回值 | 本质 |
|---|---|---|---|
| sizeof | 计算一个数据类型的大小,这个类型可以是数组、函数、指针、对象等 | size_t | 运算符 |
| strlen | 计算一个指定字符串的长度,函数原型是size_t strlen(const char *s) | size_t | 函数 |
计算字符串长度的区别:
-
sizeof 会将空字符
\0计算在内,而 strlen 不会将空字符\0计算在内; -
sizeof 会计算到字符串最后一个空字符
\0并结束,而 strlen 遇到第一个空字符\0就会停止并计算遇到的它前面的长度。
举例:
int main(void)
{
char str[100] = "abcde";
printf("sizeof(str) = %lu\n", sizeof(str)); //字节大小为100
char str1[] = "abcde";
printf("sizeof(str1) = %lu\n", sizeof(str1)); //字节大小为6
char str2[] = "\0abcde";
printf("sizeof(str2) = %lu\n", sizeof(str2)); //字节大小为7
char str3[] = "\0ab\0c de";
printf("sizeof(str3) = %lu\n", sizeof(str3)); //字节大小为9
char str4[] = "abcde";
printf("strlen(str4) = %lu\n", strlen(str4)); //字符串长度为5
char str5[100] = "abcde";
printf("strlen(str5) = %lu\n", strlen(str5)); //字符串长度为5
char str6[] = "\0abcde";
printf("strlen(str6) = %lu\n", strlen(str6)); //字符串长度为0
char str7[] = "ab cde";
printf("strlen(str7) = %lu\n", strlen(str7)); //字符串长度为6
return 0;
}