sizeof 和 strlen用法:
char str[20]="0123456789";
int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。
int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响
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是算符,strlen是函数
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以“\0”结尾的。
数组做sizeof的参数不退化,传递给strlen就退化为了指针
sizeof在编译时计算,strlen在运算时计算
对函数使用sizeof,在编译阶段会被函数返回值类型取代。
v sizeof不是函数,也不是一元运算符,他是个类似宏定义的特殊关键字,sizeof()括号内的内容是不被编译的,只是替换,所以a=8;sizeof(a=6);之后a的值仍然为8。