C的strlen和sizeof的区别

来源:互联网 发布:身份证被别人淘宝开店 编辑:程序博客网 时间:2024/04/24 16:22

 

【几个例子】
char* ss = "0123456789";
sizeof(ss) //4, ss是指向字符串常量的字符指针
strlen(ss) //10, 只能用它获得这个字符串的长度
char ss[] = "0123456789";
sizeof(ss) //11, ss是数组,计算到‘/0’位置,因此是101
strlen(ss) //10, strlen是个函数内部实现是用一个循环计算到/0为止之前
char ss[100] = "0123456789";
sizeof(ss) //100, ss表示在内存中的大小100×1
strlen(ss) //10, strlen是个函数内部实现是用一个循环计算到/0为止之前
int ss[100] = "0123456789";
sizeof(ss) //400, ss表示再内存中的大小100×4
strlen(ss) //错误, strlen的参数只能是char* 且必须是以‘/0‘结尾
sizeofstrlen区别总结】
1.sizeof运算符strlen函数
2. strlen是有效字符串的长度,不包含‘/0’,与初始化有关系,而sizeof与初不初始化没有关系
3.sizeof可以用类型做参数,用来计算类型占内存大小,strlen只能用char*做参数,且必须是以'/0'结尾的,用来计算字符串的长度;//strlen形参必须是字符指针类型
4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。//作为指针传递给strlen函数
5. sizeof编译时计算,而strlen的结果在运行时才能计算出来,//还是用sizeof好 = =
原创粉丝点击