sizeof求后面的内容or表达式所占用的字节数
strlen求字符串的有效长度,只要遇到'\0'就认为字符串结束
int main()
{
charstr1[100]="abcdef";//100,6
printf("%d,%d\n",sizeof(str1),strlen(str1));
分析:定义 char 类型的str1,初始赋值时定义了100个单元格,
而 char 类型是1个字节,100个单元格的 char 类型共有100个字节数;
字符串"abcdef"有6个字符,第6个字母后是'\0',即有效长度是6
char*str2="abcdef";//4,6
printf("%d,%d\n",sizeof(str2),strlen(str2));
分析:定义 char 类型的str2,初始赋值时定义为字符串,
而 char *是指针类型,占4字节,与后面的所占单元格个数无关;
字符串"abcdef"有6个字符,第6个字母后是'\0',即有效长度是6
charstr3[]="abcdef";//7,6
printf("%d,%d\n",sizeof(str3),strlen(str3));
分析:定义 char 类型的str3,初始赋值时定义为字符串,字符串占有7个单元格,
而 char 类型是1个字节,7个单元格的 char类型共有7个字节数;
字符串"abcdef"有6个字符,第6个字母后是'\0',即有效长度是6
charstr4[100]="abcde\0fgh";//100,5
printf("%d,%d\n",sizeof(str4),strlen(str4));
分析:定义 char类型的str4,初始赋值时定义了100个单元格,
而 char 类型是1个字节,100个单元格的 char类型共有100个字节数;
字符串"abcde\0fgh"有9个字符,但第5个字符后是'\0',即有效长度是5
charstr5[]="abcde\0fgh";//10,5
printf("%d,%d\n",sizeof(str5),strlen(str5));
分析:定义 char类型的str5,初始赋值时定义为字符串,字符串占有10个单元格,
而 char 类型是1个字节,10个单元格的 char 类型共有10个字节数;
字符串"abcde\0fgh"有9个字符,但第5个字符后是'\0',即有效长度是5
char*str6="abcde\0fgh";//4,5
printf("%d,%d\n",sizeof(str6),strlen(str6));
分析:定义 char类型的str6,初始赋值时定义为字符串,
而 char *是指针类型,占4字节,与后面的字符串所占单元格个数无关;
字符串"abcde\0fgh"有9个字符,但第5个字符后是'\0',即有效长度是5
return0;
}