前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >数组长度计算_c语言计算数组长度的函数

数组长度计算_c语言计算数组长度的函数

作者头像
全栈程序员站长
发布于 2022-09-20 10:20:14
发布于 2022-09-20 10:20:14
2.9K0
举报

大家好,又见面了,我是你们的朋友全栈君。

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

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

比如:

#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)=40 sizeof(array)=4

分析:

当数组作为函数參数传递时,数组名代表的是数组的首址,即指针,而非数组内容。假设传递整个数组,会导致栈溢出的。

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167058.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
数组名称不作为常量指针的场合 : 数组名类似于常量, 但不是常量, 下面两种场合数组名与常量指针不同 ;
韩曙亮
2023/03/27
3.8K0
【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
C语言——指针(2)
前面我们已经了解了指针的基本概念以及简单的使用,那么什么问题一定要使用指针解决呢?
用户11352420
2024/11/07
900
C语言——指针(2)
C语言——数组
什么是数组呢?从名字上来看,数组、数组是不是就是数据的组合呢?让我们来看看数组的概念,数组是⼀组相同类型元素的集合,我们需要注意的是数组中存放的是1个或者多个数据,但是数组元素个数不能为0。同时 数组中存放的多个数据,是相同类型的。
用户11352420
2024/11/07
1120
C语言——数组
strlen和sizeof的差别
一、sizeof sizeof(…)是 运算符,而不是一个函数。 一个简单的样例: int a; cout<<sizeof a<<endl; 在头文件里typedef为unsigned int,其值在编译时即计算好了,參数能够是数组、指针、类型、对象、函数等。 它的功能是: 获得保证能容纳实现所建立的最大对象的字节大小。 因为在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。 实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。 详细而言,当參数分别例如以下时,sizeof返回的值表示的含义例如以下: 数组——编译时分配的数组空间大小; 指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4); 类型——该类型所占的空间大小; 对象——对象的实际占用空间大小; 函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。 *****************
全栈程序员站长
2022/07/13
5460
C语言中数组的总结
数组的创建:在创建数组时,我们必须定义数组的类型和大小,数组的大小不能为0,数组中的元素类型都是相同的。 eg:
全栈程序员站长
2022/08/14
2K0
C语言中数组的总结
【C语言系列】C语言数组
一、数组的概念 用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素。 二、数组的定义 格式: 类型 数组名[元素个数]; 举例:存储5个人的年龄 Int agrs[5]; //在内存中开辟4x5=20个字节的存储空间 可以在定义数组的同时对数组进行初始化: Int ages[5]={17,18,19,20,21}; 遍历数组: For(int i=0;i<5;i++) { Printf(“ages[%d]=%d\n”,i,ages[i])
程序员互动联盟
2018/03/16
28.8K0
【C语言系列】C语言数组
C语言数组
风中的云彩
2024/11/07
680
C语言数组
c语言 数组存放规则,C语言数组详解
数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,
全栈程序员站长
2022/09/18
6.3K0
c语言_数组
下标 用来表示数组中的某一个元素 例如 int arr[10]; arr[1]代表数组的第二个元素
以某
2023/03/07
4.5K0
c语言_数组
江哥带你玩转C语言| 12 -二维数组和字符串
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是江哥持续更新的动力。
极客江南
2021/07/11
1.4K0
C语言详解(三) - 数组
格式: 数据类型 数组名[元素个数]; 元素个数一般表示是一个常量表达式,不能是任何变量及表达式。 但c99标准支持了变长数组创建,数组创建中元素个数可以是变量,但变长数组一旦创建数组长度(元素个数)便是确定的。变长数组不能在创建时初始化。 例如:
怠惰的未禾
2023/04/27
6530
C语言详解(三) - 数组
[C语言]数组和字符串
在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来——称为数组。数组就是内存中连续的相同类型的变量空间,同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的。
IT编程爱好者
2023/04/12
1.4K0
[C语言]数组和字符串
C语言中数组长度的计算详解
C语言字符串长度的计算可以使用strlen(str); 但是对于数组长度的大小却没有相关函数可以使用;
一个会写诗的程序员
2023/01/08
3.2K0
C语言中数组长度的计算详解
C/C++数组与指针详解
数组大小(元素个数)一般在编译时决定,也有少部分编译器可以运行时动态决定数组大小,比如icpc(Intel C++编译器)。
恋喵大鲤鱼
2018/08/03
7780
【C语言总集篇】数组篇——从不会到会的过程
大家好,很高兴又和大家见面啦!前面咱们已经把函数的相关知识点学习完了,今天咱们将开始进入数组内容的学习。在本篇章中,我会给大家带来一维数组与二维数组的详细内容,接下来我们就开始今天的正题吧!
蒙奇D索隆
2023/11/28
3800
【C语言总集篇】数组篇——从不会到会的过程
C/C++基础之sizeof使用
sizeof 是 C/C++ 中的一个操作符(operator),返回一个对象或者类型所占的内存字节数。
C语言与CPP编程
2020/12/02
3570
C/C++基础之sizeof使用
C语言进阶——指针进阶试题讲解(万字长文详解)
指针,一块存储其他内存块地址的空间,不仅能监管别人的地址信息,还拥有属于自己的地址。在取地址操作符(&)与解引用操作符(*)的“双重折磨”下,很多人对指针望而生畏,常常会掉进不规范使用指针而引发错误的大坑中。本文旨在通过众多例子来带大家理解指针(主要包含sizeof、strlen和多道指针笔试题),本文篇幅可能较长,请系好安全带,跟我走!
北 海
2023/07/01
1930
C语言进阶——指针进阶试题讲解(万字长文详解)
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
注:C语言中不能对数组进行整体引用只能单独饮用其中的元素。引用时下标可以是表达式。
小徐在进步
2024/10/02
2350
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
C++基础入门_C语言入门基础
​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开
全栈程序员站长
2022/09/30
5.7K0
C++基础入门_C语言入门基础
C语言指针超详解——强化篇
<assert.h> 头文件定义了宏 assert(),用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行。这个宏常常被称为“断言”。 使用方法如下:
fhvyxyci
2024/11/11
1170
C语言指针超详解——强化篇
相关推荐
【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文