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 };//14int len = sizeof(arr) / sizeof(arr[0]);test(arr,len);printf("主函数中的数组的长度是%d", len);return 0;
}


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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构----顺序栈的操作

1.顺序栈的存储结构 typedef int SElemType; typedef int Status; typedef struct{SElemType *top,*base;//定义栈顶和栈底指针int stacksize;//定义栈的容量 }SqStack; 2.初始化栈 Status InitStack(SqStack &S){//初始化一个空栈S.basenew SElemType[MAXSIZE];//为顺序…

腾讯云2核4G服务器CVM标准型S5实例租用5年价格表

腾讯云服务器网整理五年云服务器活动 txyfwq.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,睿频…

Transformer模型

目录 1. 概述 2. Model Architecture 2.1 自回归 2.2 编码器与解码器 2.3 Attention 2.4 Attention—mask 2.5 Multi-Head Attention 2.6 自注意力使用 2.7 point-wise feed forward network 2.8 embeddings 2.9 positional Encoding 1. 概述 之前的模型&#xf…

Shiro快速入门之三

一、前言 接Shiro快速入门之二,上篇侧重于介绍认证,这篇介绍一下Shiro的授权,先初始化5张表的数据。 注:创建三条权限记录,一个admin角色分配查询和添加用户权限,一个账户qingcai18036授予管理员角色。 二…

数据结构:串(定义,基本操作,存储结构)

目录 1.串的定义2.串的基本操作3.字符集编码4.串的存储结构1.顺序存储2.链式存储 1.串的定义 串,即字符串( String)是由零个或多个字符组成的有限序列。 一般记为s ‘a1a2……an’ (n ≥0) 其中,S是串名,单引号括起来的字符序列是…

FCOS难点记录

FCOS 中有计算 特征图(Feature map中的每个特征点到gt_box的左、上、右、下的距离) 1、特征点到gt_box框的 左、上、右、下距离计算 x coords[:, 0] # h*w,2 即 第一列y coords[:, 1] l_off x[None, :, None] - gt_boxes[..., 0][:, No…

使用U盘安装ubuntu22操作教程

U盘启动 将烧录好的U盘,插上待安装系统的电脑 服务器在开机之后长按【ESC键】进入BIOS选项中,选择对应的U盘启动 如下图,在界面中“USB”选项就是我的U盘,第一启动项选择U盘启动,其他启动项不动,选择后按F…

【推荐】一款AI写作大师、问答、绘画工具-「智元兔 AI」

在当今技术飞速发展的时代,越来越多的领域开始应用人工智能(Artificial Intelligence,简称AI)。其中,AI写作工具备受瞩目,备受推崇。在众多的选择中,智元兔AI是一款在笔者使用过程中非常有帮助的…

使用gitflow时如何合并hotfix

前言 在使用 git flow 流程时, 对于项目型的部署项目经常会遇到一个问题, 就是现场项目在使用历史版本时发现的一些问题需要修复, 但升级可能会有很大的风险或客户不愿意升级, 这时就要求基于历史版本进行 hotfix 修复. 基于历史发布版本的缺陷修复方式不同于最新发布版本的补…

SQL使用

--天空会的像哭过,离开你以后 并没有更自由 SQL进行数据的删除 一、删除delete 语法 delete [from] 表名称 where 条件数据删除,不能删除某一列,因为删除是对记录而言 2.1 删除是一条一条删除,每次删除都会将操作写入日志文件 删…

JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法,JPA默认提供的CrudRepository\JpaRepository提供的方法比较少,一般我们会手写一些方法,这里我们选择通过JPA Buddy快速生成,之前文章中讲到了JPA Buddy原本是IDEA收费插…

Word软件手动安装Zotero插件

文章目录 Word软件手动安装Zotero插件方法一方法二 参考资料 Word软件手动安装Zotero插件 方法一 关闭word在zotero中依次点击编辑—首选项—引用—文字编辑软件—重新安装加载项Microsoft word 方法二 寻找Zotero.dotm存储位置, 例如D:\Program Files\Zotero\ext…