嵌入式每日八股2.24
sizeof和strlen有什么区别
- sizeof()是运算符(既是关键字,也是运算符,但不是函数),strlen()是库函数
- sizeof()在编译时计算好了,strlen()在运行时计算
- sizeof()计算出对象使用的最大字节数,strlen()计算字符串的实际长度
sizeof都是在编译的时候计算的,所以可以通过 sizeof(x)来定义数组维数。 strlen则是在运行期计算的,用来计算字符串的实际长度,不是类型占内存的大小。
例如, char str[20] = "0123456789”,字符数组str是编译期大小已经固定的数组,在32位机器下,为 sizeof(char)*20=20,而其 strlen大小则是在运行期确定的,所以其值为字符串的实际长度10。
- sizeof()的参数类型多样化(数组,指针,对象,函数都可以),strlen()的参数必须是字符型指针,而且必须是以“\0结尾的(传入数组时自动退化为指针)
当参数分别如下时,sizeof返回的值表示的含义如下:
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(在32位机器上是4,64位机器上是8);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
【嵌入式八股】精华版(免费216问精华八股) https://www.nowcoder.com/creation/manager/columnDetail/0rOeJm
【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM
【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym
【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM
【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0