C语言--数组的长度计算【详细解释】


 一.数组的长度计算公式

我们都知道字符串有特定的函数strlen,而数组没有,(虽然字符串也是一种特殊的数组)

但是,类似于这样的数组:

int arr[]={12,89,1,5,31,78,45,12,12,0,45,142,21,12};

我们很难一眼就看出来数组的长度。所以我们需要一个公式。

先看一下这个小学题目:一个苹果5元,小明有20元,问他能买几个苹果?

很容易:20除以5==4(个)

同样类比到这里,当我们知道数组的总大小,再除以单个元素的大小,不就得到了数组的个数了。

公式:sizeof(arr)/sizeof(arr[0]); 


二.例子

int main()
{
	int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };
	int len = sizeof(arr) / sizeof(arr[0]);
	printf("数组的长度是%d", len);

	return 0;
}


 三.在函数中如何计算数组的长度

这个公式是不可以在函数中使用的,因为数组传参的时候传的是首元素的地址,因此不可以使用。那我们在函数中传数组,必须要传递两个东西:

1.数组的首元素地址

2.数组的长度

 下面通过一个代码看一下区别

void test(int arr[])
{
	int len = sizeof(arr) / sizeof(int);//2,x64的指针是8个字节
	printf("函数中的数组长度%d\n", len);
}
int main()
{
	int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };//14个
	int len = sizeof(arr) / sizeof(arr[0]);
	test(arr);
	printf("主函数中的数组的长度是%d", len);

	return 0;
}

正确的传参方式:

//正确的演示
void test(int arr[],int len)
{
	printf("函数中的数组长度%d\n", len);
}
int main()
{
	int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };//14
	int len = sizeof(arr) / sizeof(arr[0]);
	test(arr,len);
	printf("主函数中的数组的长度是%d", len);
	return 0;
}


 创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浏览器存储(localStorage和sessionStorage)

我们知道 js 写的效果,每次刷新都是从新执行,是不存在记录操作的,主要是大部分的效果不需要这样的处理 (一个 tab 切换,焦点图肯定不需要记住运行到哪里,刷新从新开始就好了)! 在 html5 之前,前…

DDR SDRAM 学习笔记

一、基本知识 1.SDRAM SDRAM : 即同步动态随机存储器(Synchronous Dynamic Random Access Memory), 同步是指其时钟频率与对应控制器(CPU/FPGA)的系统时钟频率相同,并且内部命令 的发送与数据传输都是以该时钟为基准…

gin索引 btree索引 gist索引比较

创建例子数据 postgres# create table t_hash as select id,md5(id::text) from generate_series(1,5000000) as id; SELECT 5000000postgres# vacuum ANALYZE t_hash; VACUUMpostgres# \timing Timing is on. postgres# select * from t_hash limit 10;id | …

八个开源免费单点登录(SSO)系统

使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。 单点登录(SSO)是一个登录服务层,通过一次登录访问多个应…

做外贸一个小失误可能会带来大的损失

在外贸里,虽然很多事情都是不可控的,但是我们还是需要做好自己该做的事情,将危险和不可控降低到最低的程度。那如何能够降低到最低呢? 比如在做合同,发票或者单据的时候,我们可能会喜欢依照公司固定的模板…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

【iOS】将网络请求封装在一个单例类Manager中(AFNetworking、JSONModel)

项目开发中会请求大量不同的API,若将网络请求三板斧直接写在Controller中会代码十分冗杂,干脆直接将AFNetWorking和JSONModel封装到一个全局的Manager单例类中,在Manager类中进行网络请求和数据解析 导入AFNetworking和JSONModel 参考【iOS…

linux查看端口占用情况

lsof命令 lsof(list open files)命令可以列出当前系统中打开的所有文件,包括网络端口。可以使用lsof命令查看某个端口被哪个进程占用。 具体的命令为:sudo lsof -i :端口号,其中端口号为需要查询的端口号。 netstat命令 使用netstat命令&a…

很全的家政小程序功能开发攻略;

随着互联网的发展,家政行业也逐步走向数字化。为了满足用户的需求,家政APP的开发成为了热门趋势。那么,如何定制开发一款家政APP呢?下面将为大家详细介绍。 1. 明确需求:首先需要明确家政APP的功能,包括预约…

SAP 事件:SET PF-STATUS 和AT LINE-SELECTION共用

Write List中,如果同时使用了SET PF-STATUS 和 AT LINE-SELECTION,会发现双击的时候不好用了! 怎么办?其实,只要设置F2功能键”PICK”就OK了。 2007年12月11日修改: 如图: 例: REPORT z_barry_test_pic…

中海达为第七届全国水文勘测技能大赛保驾护航

11月6日至11日,第十届全国水利行业职业技能竞赛暨第七届全国水文勘测技能大赛在广东韶关成功举办。作为本次大赛相关设备技术保障团队,中海达积极提供全方位的技术支持和保障服务,助力大赛顺利进行。 ▲开幕式现场 全国水文勘测技能大赛自199…

【入门Flink】- 11Flink实现动态TopN

基本处理函数(ProcessFunction) stream.process(new MyProcessFunction())方法需要传入一个 ProcessFunction 作为参数,ProcessFunction 不是接口 , 而是一个抽象类 ,继承了AbstractRichFunction,所有的处…

墓园殡仪馆服务预约小程序的作用

生老病死是人之常情,也是每个人需要面对的,墓园作为生活服务行业里特殊的细分类别,往往不被人提起,但又有很高的需求度,几乎可以说每天都有大小生意,比如殡葬用品、祭扫预约、位置服务等。 对墓园管理公司而…

新能源充电桩物联网应用之工业4G路由器

新能源充电桩是智慧城市建设中不可缺少且可持续发展的重要设施,而工业4G路由器物联网应用为其提供了更加高效、智能、实时的管理方式。充电桩通过工业4G路由器可以与充电运营商的管理中心建立稳定的连接,实现双向数据传输,为用户提供优质的充…

深度学习 机器视觉 车位识别车道线检测 - python opencv 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …

在线预览编辑PDF::RAD PDF for ASP.NET

RAD PDF for ASP.NET作为功​​能最齐全的基于 HTML 的 PDF 查看器、编辑器和 ASP.NET 表单填充器,RAD PDF 为传统 PDF 解决方案提供了灵活而强大的替代方案。与 Adob​​e Acrobat Reader 不同,RAD PDF 几乎可以在任何现代网络浏览器中运行,…

macOS 13.6 及后续系统安装 Asahi Linux 将破坏引导

导读Asahi Linux 是一个致力于为 Apple Silicon 设备带来 Linux 支持的项目,日前有用户反馈称,若在相关设备上安装了 macOS 13.6-14,再安装 Asahi Linux ,就会导致系统引导失败,出现“黑屏”情况。 目前 Asahi Linux 项…

第六章(微分方程)

简介 函数是客观事物的内部联系在数量方面的反映,利用两数关系又可以对客观事物的规律性进行研究.因此如何寻求函数关系,在实践中具有重要意义•在许多问题中,往往不能直接找出所需要的函数关系,但是根据问题所提供的情况&#xf…

基于SPI+DMA方式的ws2812b氛围灯控制

好处:相比于gpio控制,可以大大节省CPU的时间,CPU只要将要传输的数据计算好放入内存中,然后发动DMA传输即可,后续整个过程并不需要CPU干预,CPU可以用于做其他的事情。特别是某些带蓝牙的芯片,需要…

P6入门:项目初始化9-项目详情之资源Resource

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…