C语言中size of和strlen()区分理解

       

sizeofstrlen 都是用来获取数据的大小或长度的工具,但它们有不同的用途和行为。

sizeof:

  • 功能: 计算一个变量或数据类型的总大小(以字节为单位)。
  • 适用对象: 数据类型、变量、数组、结构体等。
  • 编译时计算: sizeof 是在编译时计算的,不需要运行时信息。
  • 包含空字符: 对于字符数组,sizeof 会包括字符串末尾的空字符 \0(如果它存在)。
  • 语法: sizeof(expression)sizeof type
  • 返回值类型: size_t

strlen

  • 功能: 计算一个以空字符 \0 结尾的字符串的长度(不包括末尾的空字符)。
  • 适用对象: 以空字符 \0 结尾的字符串。
  • 运行时计算: strlen 在运行时计算字符串的长度。
  • 不包含空字符: strlen 返回的长度不包括字符串末尾的空字符 \0
  • 语法: strlen(const char *str)
  • 返回值类型: size_t

下面举一些例子帮助大家理解:

 

11
在这个图中因为strlen是只识别结尾有\0 的字符数组,所以当数组自定义无结束标识符时,strlen 会一直扫描内存,直到找到一个空字符 \0 为止。如果在数组的后续内存中没有恰好存在一个空字符,那么它会继续读取,可能导致程序崩溃或输出一个意外的大数。大家一定要注意!!!

总结: 区分他们记住一个关键点就是strlen只能识别\0 结尾,而sizeof反应数据在内存中的总大小所以他会计算字符串中的所有元素的大小包括 \0 (如果存在)

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值