嵌入式每日八股2.24

sizeof和strlen有什么区别
  1. sizeof()是运算符(既是关键字,也是运算符,但不是函数),strlen()是库函数
  2. sizeof()在编译时计算好了,strlen()在运行时计算
  3. sizeof()计算出对象使用的最大字节数,strlen()计算字符串的实际长度

sizeof都是在编译的时候计算的,所以可以通过 sizeof(x)来定义数组维数。 strlen则是在运行期计算的,用来计算字符串的实际长度,不是类型占内存的大小。

例如, char str[20] = "0123456789”,字符数组str是编译期大小已经固定的数组,在32位机器下,为 sizeof(char)*20=20,而其 strlen大小则是在运行期确定的,所以其值为字符串的实际长度10。

  1. 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

全部评论

相关推荐

1 14 评论
分享
牛客网
牛客企业服务