sizeof 与 strlen区别

 

 

  1 /*
  2  明确概念:
  3  1)sizeof是一个关键字,目的是求某类型或数据占用实际内存的字节数;对于结构体类型,需考虑结构体对其方式
  4  2)strlen是一个函数,目的是求字符串的长度,从字符串第一个元素到第一个'\0'之间的所有数据
  5 如下例所示:
  6     有两种表示字符串的方法:字符串形式和字符形式
  7     有两种定义数组的方法:设定数组长度和不设定数组长度
  8 则:当固定数组长度时:
  9         sizeof的值为数据的总字节数,即sizeof(str1) == sizeof(str2) == 20;
 10         strlen的长度为实际字符串的长度,且不包含结束符'\0',即strlen(str1) == strlen(str2) == 11;
 11     当不固定数组长度时:
 12         sizeof用法同上,所以sizeof(str3) == sizeof(str4) == 13(包含结束符'\0')
 13         strlen会被字符串中的'\0'所截断;strlen(str3) == strlen(4) == 5;
 14 */
 15 #include <stdlib.h>
 16 #include <string.h>
 17 #include <stdio.h>
 18 
 19 int main(void)
 20 {
 21     char str1[20] = {"Hello world"};
 22     char str2[20] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'};
 23 
 24     char str3[] = {"Hello\0 world"};
  25     char str4[] = {'H', 'e', 'l', 'l', 'o', '\0', ' ', 'w', 'o', 'r', 'l', 'd', '\0'};
 26 
 27     printf("sizeof: str1 2 3 4:%8d %8d %8d %8d\n", sizeof(str1), sizeof(str2), sizeof(str3), sizeof(str4));
 28     printf("strlen: str1 2 3 4:%8d %8d %8d %8d\n", strlen(str1), strlen(str2), strlen(str3), strlen(str4));
 29 
 30     return 0;
 31 }
 32                                                                                               

执行结果:

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值