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