C语言中sizeof和strlen的区别

整体看一个代码的效果

#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
	int a[8]={1,2,3};
	char b[]="love";

	printf("%ld\n",sizeof(a));
	printf("%ld\n",sizeof(b));
	printf("%ld\n",strlen(b));
	return 0;
}
输出结果为:
32
5
4

通过上述代码可以看出,
第一个printf得出sizeof求的是数组实际所占的内存的字节数,因为是int类型的,每个int 4个字节,8个元素,所以为32.
第二个printf得出,sizeof求的是数组实际所占的内存的字节数,算上字符串结束符’\0‘
第三个printf可以看出,strlen求出的是字符串的实际长度

  • 总结:
    1、strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。

    2、sizeof计算声明后所占的内存数(字节大小),不是实际长度。

    3、sizeof是一个取字节运算符,而strlen是个函数。

    4、sizeof的返回值=字符个数*字符所占的字节数,字符实际长度小于定义的长度,此时字符个数就等于定义的长度。若未给出定义的大小,分类讨论,对于字符串数组,字符大 小等于实际的字符个数+1;对于整型数组,字符个数为实际的字符个数。字符串每个字符占1个字节,整型数据每个字符占的字节数需根据系统的位数类确定,32位占4个字节。

sizeof

  • 判断数据类型长度符的关键字
    用法
    sizeof (类型说明符)
      sizeof 表达式
    定义
    sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

strlen

strlen(char*)函数求的是字符串的实际长度,直到遇到第一个’\0’,然后就返回计数值,且不包括’\0’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值