数据长度检查sizeof和strlen的区别

sizeof介绍

sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。

用法

sizeof (类型说明符)

sizeof 表达式

定义

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

例如:

uint8_t a;
uint16_t b;
uint32_t c;
uint64_t d;
char e[]=“hello”
sizeof(a);//结果为1
sizeof(b);//结果为2
sizeof(c);//结果为4
sizeof(d);//结果为8
sizeof(e);//6字节
sizeof(*e);//1字节

strlen介绍

strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')

头文件:string.h或cstring

格式:strlen (字符指针表达式)

功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内

说明:返回s的长度,不包括结束符NULL。

例:

char a[100]="HELLO";
char b[100]="length";
c=strlen(a);//5
d=strlen(b);//6

sizeof和strlen的区别

1.关键字 sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等。strlen的参数只能是char,且必须是以''\0''结尾的。

2.

char sArr[] = "HELLO";
/*用sizeof求长度*/
printf("sArr的长度=%d\n", sizeof(sArr));

相对于函数 strlen,这里的示例代码运行结果为 6(因为它包括结束字符 null)。同时,对 sizeof 而言,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以 sizeof 在编译时计算缓冲区的长度。也正是由于在编译时计算,因此 sizeof 不能用来返回动态分配的内存空间的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值