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 不能用来返回动态分配的内存空间的大小。