面试官问:sizeof和strlen的区别

最近在找工作面试和笔试中遇到了这个问题,当遇到这个问题时,第一反应是:都是求长度,然后是什么?不会知道了,如果给我一个编译器,可能试试就能试出来区别。但是面试时,你如果知道的很清楚,就能答上,如果不清楚就会支支吾吾。为了能够清除的区分sizeof和strlen,做以下总结:

  1. sizeof是关键字,strlen是一个函数。

   注:如果使用strlen时一定要记得包含<string.h>头文件。

  1. strlen是一个求字符串的函数,如果一个数组中存的是字符类型的变量,可以使用此函数求字符数组的长度,如果一个数组中存的是其他类型的变量,就不能够使用此函数。

   sizeof的实质是求所数组或者字符串占内存的大小,当变量类型为char时,所占内存字节数与变量个数相等。

   strlen的实质是求字符串或者字符数组中的字符的个数。

以下是在LeetCode和牛客网的编译器中测试的一些例子。

 char a[14]=”abcd”;

 strlen(a)=4;

 sizeof(a)=14;

char a[]=”abcd”;              

strlen(a)=4;

sizeof(a)=5;//计算内存时算上了\0

char *a=”abcdefghig”;

strlen(a)=10;

sizeof(a)=8;//sizeof求得时指针所占内存的大小,64位机器当然占用8个字节内存咯。

/*******/

Int a[4]={1,2,3};

strlen(a)=1;  //计算长度错误,但是编译通过了。

sizeof(a)=16; //数组长度为4,每个int型占用4个字节,共占用16个字节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值