sizeof与strlen的区别

1.sizeof与strlen的定义

1.1sizeof

sizeof是C/C++中的一个长度运算符,优先级为2
作用: 是返回一个对象或者类型在内存中所占用的字节数。

1.2 strlen

strlen是C语言中的库函数,所在头文件为#include <string.h>
原型: unsigned int strlen(char *str);其中str为指定的字符串
功能: 统计字符串str中字符的个数(不包括 ‘\0’)
返回值: 返回字符个数

2.区别

1.strlen 测量的是字符的实际长度,以’\0’ 结束,但不包括结束字符(\0或null)。而sizeof 测量的是字符的分配大小。

例:
char str[20] = "123456789";
int a = strlen(str); /*a = 9*/
int b = sizeof(str);/*b = 20*/

运算结果:

a的长度为9
b的长度为20

上面结果为a = 9,这是因为strlen计算的是字符串的实际长度,以第一个’\0’为结束符;b = 20,这是因为sizeof计算的是分配的数组str[20]所占的空间大小,不受里面存储内容的影响。

2.sizeof是编译期就计算完成的,strlen是运行期计算的。

例:
char arr[] = "hello";
/*用sizeof求长度*/
printf("arr的sizeof长度=%d\n", sizeof(arr));
printf("arr的strlen长度=%d\n", strlen(arr));

运算结果:

arr的sizeof长度=6
arr的strlen长度=5

sizeof代码运行结果为 6(因为它包括结束字符 null)。另外,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以 sizeof 在编译时计算缓冲区的长度。也正是由于在编译时计算,因此 sizeof 不能用来返回动态分配的内存空间的大小。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值