获取字符串、字符串数组、数组等的长度

简单来说

在这里插入图片描述

strlen()和sizeof()

先放一个例子

char *greeting1 = "hello";
char greeting2[] = {'h', 'e', 'l', 'l', 'o'};
char greeting3[] = {'h', 'e', 'l', 'l', 'o', '\0'};
char greeting4[] = "hello";
    
printf("greeting1 sizeOf: %ld, strlen: %ld\n", sizeof(greeting1), strlen(greeting1));
printf("greeting2 sizeOf: %ld, strlen: %ld\n", sizeof(greeting2), strlen(greeting2));
printf("greeting3 sizeOf: %ld, strlen: %ld\n", sizeof(greeting3), strlen(greeting3));
printf("greeting4 sizeOf: %ld, strlen: %ld\n", sizeof(greeting4), strlen(greeting4));

输出结果:

greeting1 sizeOf: 8, strlen: 5
greeting2 sizeOf: 5, strlen: 7
greeting3 sizeOf: 6, strlen: 5
greeting4 sizeOf: 6, strlen: 5

函数 strlen 返回字符串里的字符数不包括终止字符 ‘\0’,这里注意 strlen 是一个 C 的函数,而 sizeof 只是一个操作符。

我们知道,sizeof 操作符的参数可以是数组、指针、类型、对象、函数等,函数 strlen 的参数只能是字符串

对于 sizeof, 其参数不同时,其返回的值也不一样,如下:

1、数组:编译时分配的数组空间大小;
2、指针:存储该指针所用的空间大小(32位机器上是4,64位机器上是8);
3、类型:该类型所占的空间大小;
4、对象:对象的实际占用空间大小(这个指的是在 C++ 中);
5、函数:函数的返回类型所占的空间大小。函数的返回类型不能是 void 类型;

在这里插入图片描述
关于字符串长度更具体解释见博客:不见得你会算字符串长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值