strlen和sizeof的区别

大家在使用sizeof和strlen的时候,有时容易会将两者混淆,接下来我将从三个方面讲述它们两个的区别:

1.头文件的使用

sizeof无需使用任何头文件,它是C的内置运算符,可以处理任意数据类型,比如说它可以计算数组的长度,我们给定一个数组,int arr[10]={1,2,3,4,5,6,7,8,9,10},若要求它的长度,可以用sizeof(arr)/sizeof(arr[0]),得出结果为10;

而strlen属于标准库函数,用于处理字符串,它需要包含头文件<string.h>。

2.计算范围的区别

sizeof是用于计算变量所占的全部字节数,它与strlen的区别就是包含字符串\0(前提是它为字符数组),e.g. char ch1[ ] = "abc";sizeof(ch1)结果为4,包含‘a'/'b'/'c'/’0‘4个字节;而strlen(ch1)结果为3,仅统计‘a'/'b'/'c';

3.处理对象限制的差异

strlen:仅支持以'\0'结尾的字符串(如字符数组、字符串常量),若传入类似于无’\0‘的字符数组,会导致结果随机;而sizeof并没有限制,可以计算类似于整型,数组,指针等变量的字节大小。

e.g. 

# include <string.h>

#include <stdio.h>
int main()
{
    char ch[] = { 'a','b','c' };
    printf("%zd", strlen(ch));
    return 0;

此时没有“\0’,即打印随机值(注:strlen最好用%zd来打印)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值