数组、字符串长度的计算
常见的计算长度的函数有两个,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)计算字符串长度时关键是要注意辨认转义字符:(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成.所以,遇到反斜杠时要特别注意!!! 1.不带转义字符的字符串 如:" ...
- 数组、字符串长度的计算(转)
转自:https://blog.csdn.net/duan19920101/article/details/50606351 常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们 ...
- C语言求字符串数组的长度函数计算
常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们之间的差别还是很大的. sizeof():主要负责计算数组的长度: strlen():主要负责计算字符串的长度. (1)siz ...
- c/c++ 计算字符数组/字符串长度
1.自定义函数求长度 2.使用strlen()函数 3.使用sizeof()操作符 4.使用length()函数 利用自定义函数的方法: int cont_str(char *s) {int i = ...
- 元素宽度固定,根据字符串长度,计算fontSize,缩小字号适配页面
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 字符串长度 与数组长度
对于定义 char str[] = "abc\000def\n"(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是: (2分)(2 ...
- java中的数组长度的计算
讲到了java中数组的长度的计算,那就是少不了了那个java中的数组的定义. int a[]=new int[5]; String[]str=new String[]; String[]str=new ...
- php 字符串里面计算,php 计算字符串长度
在项目的开发中,常常遇到要计算一个字符串的长度(中英文结合),由于产品要求不同,每个中文的长度要求也不一样. 解决utf-8编码下的字符串长度(可自定义每个中英文算几个字节) /** * 计算字符串长 ...
- C语言中数组长度的计算详解
一. C语言中计算数组长度大小 C语言字符串长度的计算可以使用strlen(str); 但是对于数组长度的大小却没有相关函数可以使用: C语言数组长度的大小可以使用: int main() {int ...
最新文章
- 终于完成了“微软”化
- spring+mybatis事务的readonly属性无效
- IOS-Swift开发基础——通知
- 将 Shiro 作为应用的权限基础 五:密码的加密/解密在Spring中的应用
- php phar包require报错,被遗忘的PHP5.3新特性——Phar
- WCF分布式开发常见错误(10):套接字连接中断,The socket connection was aborted
- 有必要服务器虚拟化吗,服务器虚拟化有必要吗
- 有些人可能也在哪见过这样的HTML5效果
- Python+OpenCV图像处理之模糊操作
- 如果深入学习前端,大佬给你总结了几个技巧!
- 浅谈C# XML WebServer数据序列化及数据压缩
- Unity3d——UGUI学习笔记
- SQL Server Always Encrypted加密使用
- linux pannel 误删除后的恢复方法
- APP从苹果开发者A账号转移到B账号的流程
- 计算机一级wps office考试题库,2017计算机一级WPSOffice复习题(含答案)
- SpringBoot工程使用shiro 进行MD5加密
- 机顶盒宽带拨号失败服务器未响应,机顶盒详细错误代码.doc
- ISO 26262系列文章之————5 硬件开发
- SSM岭师旧书回收系统毕业设计源码041921