C语言中,sizeof和strlen的区别

sizeof与strlen均为C语言中求长度的关键字,以下我将列举它们的区别

1.准备

为了区分二者,我将创建两个数组

这两个数组的区别是:

arr1中,有“\0”的存在。也就是说该数组中实际存放的是“abcdefg\0”。

而arr2中,该形式在数组中存放的形式只是‘a' 'b' 'c' 'd' 'e' 'f' 'g'这七个字母。

2.sizeof

使用sizeof对二者求长度后,发现arr1的字符长度是8,而arr2的字符长度是7,原因就在于以“abcdefg”形式存放的arr1中,其实际存放形式为“abcdefg\0”,多一个“\0”,因此长度为8;而arr2中仍是以七个字母abcdefg存放(给了几个字符就存放几个字符),因此其长度为7.

经过调试我们也可发现,如下图

注:sizeof的计算结果为size_t(也就是unsigned int)的类型,因此在打印的时候有可能会报警告(如下图)

此时,我们只需要在打印时以%zd的形式打印即可消除警告(如下图)。

2.strlen

使用strlen求长度时需要引用头文件<string.h>

strlen求长度的原理:遇到“\0”就停止, arr1中字符串末尾有\0,因此可以正确求出字符串长度;但arr2中没有\0,因此不会正确读出长度,只会生成一个伪随机数。

两种打印形式均正确

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值