【9】有关于字符串的sizeof和strlen区别

sizeof是求内存字节,strlen是求字符串的有效长度

    char str1[100] = "abcde";

    printf("%d,%d\n",sizeof(str1),strlen(str1));//100,5

   因为字符数组str1占有100个字节,所以sizeof(str1)为100,且该字符串有效长度为5,所以strlen(str1)为5

    char str2[] = "abcde";

    printf("%d,%d\n",sizeof(str2),strlen(str2));//6,5

 因为字符数组str2没有明显说明字符数组占有多少字节,所以sizeof(str2)为根据后面字符数组长度来计算,即('a''b','c','d','e','\0')相加起来,为6,,且该字符串有效长度为5,所以strlen(str2)为5


    char *str3 = "abcde";

    printf("%d,%d\n",sizeof(str3),strlen(str3));//4,5

   因为*str3为一维指针,所以sizeof(str3)为4,且该字符串有效长度为5,所以strlen(str3)为5


    char str4[100] = "abcde\0ijk\n";

    printf("%d,%d\n",sizeof(str4),strlen(str4));//100,5

   因为字符数组str4占有100个字节,所以sizeof(str4)为100,且该字符串有效长度为5(字符串遇见'\0'就结束),所以strlen(str4)为5


    char str5[] = "abcde\0ijk\n";

    printf("%d,%d\n",sizeof(str5),strlen(str5));//11,5

sizeof(str5)为11,是{’a','b','c','d','e','\0','i','j','k',\n',\0'},且该字符串有效长度为5,该字符串有效长度为5(字符串遇见'\0'就结束)所以strlen(str5)为5


    char *str6 = "abcde\0ijk\n";

    printf("%d,%d\n",sizeof(str6),strlen(str6));//4,5

因为*str6为一维指针,所以sizeof(str6)为4该字符串有效长度为5(字符串遇见'\0'就结束)所以strlen(str6)为5

猜你喜欢

转载自blog.csdn.net/Murphy5222/article/details/81097118