已知 char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char ss[] = "0123456789";
为什么 sizeof(str1)=4 sizeof(str2)=6; sizeof(str3)=8; sizeof(ss)=11;
sizeof(str1)=4 ,因为str1只是指向一个字符串的指针,指针只占4字节.
sizeof(str2)=6 , str2已被定义为一个字符串数组,字符串数组后面带一个'/0' 所以sizeof长度是6, strlen长度则为5,因为strlen是不将'/0'计算在内的。
sizeof(str3)=8 , str3是长度为8的字符串数组,strlen(str3)=1.
sizeof(ss)=11; ss为字符串数组, strlen(ss)=10;
总结: sizeof 统计变量/常量类型所占内存空间。 strlen 统计字符串长度,但不包括'/0'字符.