常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们之间的差别还是很大的。

sizeof():主要负责计算数组的长度;

strlen():主要负责计算字符串的长度。

(1)sizeof():数组占用字节除以数组类型所占字节,结果为数组元素个数
使用方法:sizeof(数组名)/ sizeof(数组类型名)
(2)strlen():strlen,求字符串有效长度
方法:strlen(字符数组名)  //结果为字符数组有效字符长度,不包括末尾的’\0′

注意:当数组作为函数参数传递时,数组名代表的是数组的首址,而非数组内容,故无法使用sizeof和strlen;
所以,在传址时,应提供2个参数:1、数组名,代表数组首地址;2、数组元素个数,以便确定传递的次数。

下面来举个例子说明一下,不同情况下sizeof()的用法:

#include<iostream>using namespace std;void Sum(int array[ ]){cout<<“sizeof(array)=”<<sizeof(array)<<endl;}void main(){int a[ ]={1,2,3,4,5,6,7,8,9,10};cout<<“sizeof(a)=”<<sizeof(a)<<endl;Sum(a);}

运算结果为:sizeof(a)=10   sizeof(array)=4

看到这样的结果,是不是感觉很奇怪?同样的数组,在不同的位置,输出却不一样。

分析:当数组作为函数参数传递时,数组名代表的是数组的首址,即指针,而非数组内容。如果传递整个数组,会导致栈溢出的。

所以在主函数中使用sizeof计算出的是准确的数组长度。而在调用函数中,由于传递的数组不再是数组本身,而是其地址,所以用sizeof计算出的,实际上是数组地址的长度,这时的sizeof(array),实际上是sizeof(int)。

因此,要想计算实际的数组长度,还是在主函数中求好,要是在调用时想用,可以作为参数传递过去嘛。

再来看看strlen()的用法:

若数组为存储字符串的字符数组,即以双引号括起来的字符串整体初始化的字符数组

例如:char a[]=”abcdefg”或者char a[]={“abcdefg”}

则所求得的长度为字符数组的长度,而不是对应的字符串的长度,要求字符串的长度还需要减1。

即:字符串长度=字符数组长度-1。

原因:存储字符串的字符数组末尾有一个’\0’字符,需要去掉它。

对于char a[]=”abcdefg”

sizeof(a)/sizeof(a[0])=8,要求字符串长度的话应该减1。

注意:sizeof()在计算时,包括末尾的’\0′

strlen(a)=7,表示的就是字符串的长度。

但对于char a[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’}

sizeof(a)/sizeof(a[0])=7

数组、字符串长度的计算相关推荐

  1. 字符串长度的计算与字符串比较

    字符串长度的计算 (1)计算字符串长度时关键是要注意辨认转义字符:(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成.所以,遇到反斜杠时要特别注意!!! 1.不带转义字符的字符串 如:" ...

  2. 数组、字符串长度的计算(转)

    转自:https://blog.csdn.net/duan19920101/article/details/50606351 常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们 ...

  3. C语言求字符串数组的长度函数计算

    常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们之间的差别还是很大的. sizeof():主要负责计算数组的长度: strlen():主要负责计算字符串的长度. (1)siz ...

  4. c/c++ 计算字符数组/字符串长度

    1.自定义函数求长度 2.使用strlen()函数 3.使用sizeof()操作符 4.使用length()函数 利用自定义函数的方法: int cont_str(char *s) {int i = ...

  5. 元素宽度固定,根据字符串长度,计算fontSize,缩小字号适配页面

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 字符串长度 与数组长度

    对于定义 char str[] = "abc\000def\n"(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是: (2分)(2 ...

  7. java中的数组长度的计算

    讲到了java中数组的长度的计算,那就是少不了了那个java中的数组的定义. int a[]=new int[5]; String[]str=new String[]; String[]str=new ...

  8. php 字符串里面计算,php 计算字符串长度

    在项目的开发中,常常遇到要计算一个字符串的长度(中英文结合),由于产品要求不同,每个中文的长度要求也不一样. 解决utf-8编码下的字符串长度(可自定义每个中英文算几个字节) /** * 计算字符串长 ...

  9. C语言中数组长度的计算详解

    一. C语言中计算数组长度大小 C语言字符串长度的计算可以使用strlen(str); 但是对于数组长度的大小却没有相关函数可以使用: C语言数组长度的大小可以使用: int main() {int ...

最新文章

  1. 终于完成了“微软”化
  2. spring+mybatis事务的readonly属性无效
  3. IOS-Swift开发基础——通知
  4. 将 Shiro 作为应用的权限基础 五:密码的加密/解密在Spring中的应用
  5. php phar包require报错,被遗忘的PHP5.3新特性——Phar
  6. WCF分布式开发常见错误(10):套接字连接中断,The socket connection was aborted
  7. 有必要服务器虚拟化吗,服务器虚拟化有必要吗
  8. 有些人可能也在哪见过这样的HTML5效果
  9. Python+OpenCV图像处理之模糊操作
  10. 如果深入学习前端,大佬给你总结了几个技巧!
  11. 浅谈C# XML WebServer数据序列化及数据压缩
  12. Unity3d——UGUI学习笔记
  13. SQL Server Always Encrypted加密使用
  14. linux pannel 误删除后的恢复方法
  15. APP从苹果开发者A账号转移到B账号的流程
  16. 计算机一级wps office考试题库,2017计算机一级WPSOffice复习题(含答案)
  17. SpringBoot工程使用shiro 进行MD5加密
  18. 机顶盒宽带拨号失败服务器未响应,机顶盒详细错误代码.doc
  19. ISO 26262系列文章之————5 硬件开发
  20. SSM岭师旧书回收系统毕业设计源码041921

热门文章

  1. 大数相乘 (模板)
  2. PHPWAMP乱码一键解决,PHP乱码通用解决方案/网站乱码的多种原因分析
  3. yum命令,yum本地源,共享yum源
  4. 网上订餐系统java论文_网上订餐系统的毕业设计
  5. 拉姆达表达式转对象(太给力啦!)
  6. 一文带你清晰弄明白线程池的原理
  7. 运维工程师分享7道经典面试题
  8. python网球比赛模拟主持稿_主持人大赛模拟主持环节情景
  9. ds3617xs 华擎J3455 无线网卡m.2 E key接口扩展2个M.2 E key接口
  10. Flutter控件——常用控件:按钮