图解sizeof和strlen

1 介绍

sizeof 是C语言关键字不是函数,而strlen是函数
下面代码测试了sizeof,证明sizeof不是函数:
sizeof测试
通过上图可以看见,sizeof(ans)和 sizeof ans都没有报错,可以联想函数,函数名后面没有括号是不行的,因为函数名后的()是函数调用操作符,所以可以证明sizeof不是函数。
sizeof在计算变量所占空间大小时,括号可以省略,而计算类型大小时不能省略

strlen函数原型:

size_t strlen ( const char * str );

其中size_t其实是无符号整型,原型为:

typedef unsigned int size_t;

2 比较sizeof和strlen

2.1 sizeof

2.1.1 sizeof测类型字节数

在这里插入图片描述
分析:在32位系统,测出上述的结果。由结果可以知道double在32位系统下,有8个字节。

2.1.2 sizeof测字符串长度

在这里插入图片描述
分析:sizeof测字符串长度时,计算的是包含字符串结束标志\0的长度,所以上图所示,字符串长位5个字节(5*(char的字节大小))。

2.1.3 sizeof测数组字节数和长度

sizeof
总结分析:
sizeof可以用来测类型的大小
sizeof可以用来字符串的长度,但是sizeof会计算字符串的结束标志位\0
sizeof可以用来计算整型数组的长度

2.2 strlen测字符串

strlen
用strlen测字符串长度时,不计算字符串结束标志\0的长度

3 总结

  • sizeof的不是函数。
  • sizeof可以测整型,数组等的长度。
  • sizeof后括号中单独加数组名表示的是 整个数组的字节大小。
  • sizeof还可以用来测试指针类型大小,即地址大小。

strlen在测字符串长度时,比sizeof少了一个结束标志\0。

一个公式送给大家:
∫ t o d a y ∞ ( L e a r n + S u m m a r y + C o d i n g ) = S u c c e s s \int _{today}^{\infty} (Learn+Summary+Coding)=Success todayLearn+Summary+Coding=Success

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值