sizeof和strlen的说明

sizeof是操作符,strlen是库函数,他俩一个是计算大小的,一个是计算长度的。

sizeof是计算变量(类型)在内存中所占空间的大小。单位是字节

注意:

1:类型不占空间,通过类型创建的变量占空间

2:当sizeof计算指针变量的大小,可能是4个字节大小也有可能是8个字节大小。

指针变量是存放地址编号的

如果地址编号由32位二进制数组成,存放地址编号时,要申请32个比特位的空间存放,一个字节=八个比特位,也就是四个字节的空间。

如果地址编号由64二进制数组成,存放地址编号时,要申请64个比特位的空间存放,一个字节=八个比特位,也就是8个字节的空间。

strlen是计算字符串的长度,字符串有两个特性:

1:字符串末尾放着\0,\0是字符串结束的标志。

2:字符串和数组一样,也是在内存中连续存放的。

此时将字符串的第一个字符,作为地址,传给strlen函数,strlen将会以这个地址一直向后找\0,统计\0之前的字符的个数,个数即长度。

写到这里,我们也会发现:

strlen是比较”痴情“的一个函数,它只倾向于\0,不遇到\0,它不会回头,并且它只针对字符串工作。

siezof就比较普通了,没有什么特点。

例:

char arr1[]={"abcd"};
char arr2[]={'a','b','c','d'}:

sizeof(arr1)=5;

strlen(arr1)=4;

// 虽然此时使用strlen函数,将数组名arr1传给了strlen函数,但它不会计算数组的长度,而是计算数组中字符串的长度。是一个痴情的函数。

strlen(arr2)= (不确定值)

sizeof(arr2)=4;

在这里特别注意的是\0,如果向数组中没有主动放\0,并求我们向数组中存放的字符长度时,strlen函数则会一直在内存中向后寻找\0,直到在内存中遇到\0,他才会停止工作,并将\0之前出现的字符个数返回。

所以说,此时求得的字符的长度是不确定的。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值