sizeof和strlen的区别

278 阅读1分钟
名字功能返回值本质
sizeof计算一个数据类型的大小,这个类型可以是数组、函数、指针、对象等size_t运算符
strlen计算一个指定字符串的长度,函数原型是size_t strlen(const char *s)size_t函数

计算字符串长度的区别:

  1. sizeof 会将空字符\0计算在内,而 strlen 不会将空字符\0计算在内;

  2. 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;
}