700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > strlen 和 sizeof 计算字符串长度的区别

strlen 和 sizeof 计算字符串长度的区别

时间:2021-12-19 14:48:07

相关推荐

strlen 和 sizeof 计算字符串长度的区别

两者区别

sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。sizeof是运算符(C++ 关键字),strlen是函数。sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以”\0”结尾的sizeof计算的是变量的大小,而strlen计算的是字符串的长度,前者不受字符’\0’影响,后者以’\0’作为长度判定依据

测试代码

int main(){char *str1 = "abcdef";char str2[] = "abcdef";char str3[8] = {'a', 'b', 'c'};char str4[] = "ab\0cd";printf("sizeof(str1)=%d\n",sizeof(str1));printf("strlen(str1)=%d\n",strlen(str1));printf("sizeof(str2)=%d\n",sizeof(str2));printf("strlen(str2)=%d\n",strlen(str2));printf("sizeof(str3)=%d\n",sizeof(str3));printf("strlen(str3)=%d\n",strlen(str3));printf("sizeof(str4)=%d\n",sizeof(str4));printf("strlen(str4)=%d\n",strlen(str4));return 0;}

执行结果如下:

sizeof(str1) = 4; strlen(str1) = 6;sizeof(str2) = 7; strlen(str2) = 6;sizeof(str3) = 8; strlen(str3) = 3;sizeof(str4) = 6; strlen(str4) = 2;

结果解释:

1、 str1是字符指针变量,sizeof获得的是该指针所占的地址空间,32位操作系统对应4字节,所以结果是4;

strlen返回的是该字符串的长度,遇到’\0’结束,’\0’本身不计算在内,故结果是6。

2、 str2是字符数组,没有规定大小,所以大小由字符串常量”abcdef”确定,sizeof获得该数组所占内存空间大小,包括字符串结尾的’\0’,所以结果为7;

strlen同理,则是6。

3、 str3也是字符数组,但数组的大小已经确定为8,故sizeof得到的结果是8;

strlen统计’\0’之前所有字符的个数,即为3;

4、 str4是常量字符数组,和str2类似,区别在于中间忽然出现个’\0’,所以sizeof得到字符总数即6;

strlen计算至’\0’结束,因此返回2;

注意:这里的’\0’是一个字符,别看成为两个

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。