一维数组 和 关键字 sizeof

news2024/11/18 10:37:55

数组的概念

“ 数组 ”我们可以理解成一组相同类型元素的集合

(1)其中可以是单个或是多个元素,可以是0,但元素个数不能为0

(2)一个数组中存放的元素必须是同类型的,比如一组整型,一组浮点数,一组字符等等,这不难理解吧,就相当于分类嘛

数组分为一维数组多维数组,今天这一期咱们主要探讨的就是一维数组

一.一维数组的创建

一维数组的表现格式:type   arr [ 常量值 ]

(1)type是数组的类型,如:int,float,char,short等,也可以自定义

(2)arr是数组的名字,可根据实际情况自定义(数组名是给我们程序员自己看的,所以我们给数组取名字要尽量贴合数组的运用意义,函数取名也是一样

(3)[ ] 中的常量值是存放数组的大小,也就是数组的元素总个数

如图,我们在给数组取名的时候,要根据我们的实际情况,实际意义来取,以便于我们理解代码

二.数组的初始化

在我们创建数组的时候,有时我们需要给定一些初始值,并将这些数据放在大括号内,这就被称为数组的初始化。这跟我们之前讲到过的初始化差不多,只是数组的初始化可以是一个或多个

数组有三种初始化类型:

1)完全初始化    (2)不完全初始化    (3)错误初始化

三.数组的类型

数组的类型跟我们上面提到的数组中元素的类型不是一个概念哦,诸君一定要将这两个概念分清,千万不要将两者混淆,这一区分概念,在我们后面在指针板块学习中对指针的理解至关重要

其实数组的类型算是一种自定义,我们将一个数组的数组名去掉,剩下的部分就被称做数组的类型

四.数组的下标

1.数组下标的概念

在我们C语言中,规定了数组是有下标的,且数组下标是从0开始的,如果我们一个数组内存放了n个元素,它就有n - 1个下标,也就是最后一个元素的下标为n - 1,下标可以理解为计算机式的IP地址,计算机通过这个下标就能找到并且访问读取这个下标所对应的元素(这一概念还望诸君一定药要重视理解,在我们后续学习指针的时候会做更深入的研究)

2.下标引用操作符 [ ]

上面提到我们可以通过下标访问读取到该元素,这个时候就有小伙伴要问了,那到底怎么去访问呢?你看,你又急。C语言中提供了一种操作符——下标引用操作符: [ ] 

我们只需要将我们想找到的元素的下标填写进下标引用操作符中,就可以访问并读取该元素

五.数组的输入和输出

提到输入,诸君脑海里是不是应该第一时间冒出scanf函数,这是对的;那么提到输出,是不是想到printf函数,这就不完全对咯,我们一个数组可能储存了多个元素,我们单靠一个printf函数是不能完成对整个数组的输出的,因此,我们还需利用循环去遍历数组中的每个元素,一个一个访问读取再通过printf打印。在我们学过的众多循环中,诸君认为哪一个循环语句在这里的使用效果更佳呢?我认为是 for 循环

六.一维数组在内存中的储存

这里就是我们有关于地址的概念了,也就是C语言中的指针!!!这是C语言中的大Boss

数组元素在内存中的储存都有属于它的一个地址,在不同的编译环境中(x64和x86),我们的储存地址位数不同,且储存是十六进制,如图:

通过左后两位十六进制数我们可以看出,数组随着下标的增大,地址是由小到大在有规律的变化的,且每两个相邻元素之间相差4,这是为什么呢?因为我们的元素类型是 int 整型啊,每个元素都是整型,那一个整型占几个字节呢?可不就是4个嘛,而且由此观之,我们可以得出结论:数组在内存中是连续储存的

七. sizeof 关键字

C语言中有着这样一个关键字,它能够计算类型或者变量的大小(个数),也能用于计算数组的大小,那就是——sizeof

当我们想要计算出数组中的元素个数怎么办呢?哎,你看,你又急。我们有了数组的总大小,且在本次开篇就强调过,数组中所有元素都是同类型的,因此,我们只需要计算出数组中一个元素的大小(我们通常选择下标为0的元素),再用数组总大小除以一个元素的大小,不就得出了数组中的元素个数了嘛

OKK,一维数组的相关概念及其运用我们就讲到这里,有关二维数组的知识点我下期在给诸君总结。数组中有一个很重要的概念就是——地址,这个点与我们后续学习的“ 指针 ”息息相关,诸君一定要引起重视,理解清楚地址的概念,有什么疑问的地方欢迎跟我交流,好了就这样,咱们下期再见,与诸君共勉!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

【密评】 | 商用密码应用安全性评估从业人员考核题库(6/58)

根据Kerckhoffs原则,密码系统的安全性主要依赖于()。 A. 密钥 B. 加密算法 C. 解密算法 D. 通信双方 2000年10月,美国NIST宣布()算法作为新的高级加密标准AES。 A. Rijndael B. RC6 C. SERPENT D. Twofish…

去除快捷方式的箭头图标

文章目录 取消箭头显示恢复箭头显示结果展示 添加快捷方式之后,会有箭头图标,部分场景下看着较为难受: 可以通过如下方式取消/显示箭头: 取消箭头显示 新建一个.bat文件,内部加入如下命令: reg add "…

Python-VBA函数之旅-reversed函数

目录 一、reversed函数的常见应用场景 二、reversed函数使用注意事项 三、如何用好reversed函数? 1、reversed函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://blog.csdn.net/ygb_10…

Day2 | Java基础 | 2 数据类型

Day1 | Java基础 | 2 数据类型 基础版staticstatic的用法static修饰内部类static修饰方法static修饰变量static修饰代码块 深入分析static小结 问题回答版参数传递形参和实参的区别是什么?Java是值传递还是引用传递?值传递和引用传递的区别是什么&#x…

计算机发展史故事【6】

电脑群英谱 本世纪三、四十年代,是计算机发展史里最重大的收获季节。群英荟萃,逐鹿中原,鹿究竟死于谁手,并不是没有争议的。除了马克1 号与埃历阿克,还有一大批科学家为计算机的诞生作出过巨大的贡献,他们…

怎么做知识付费课程呢_揭秘知识付费课程系统的搭建之路

在信息爆炸的时代,知识的价值日益凸显。而知识付费,作为一种新型的学习方式,正逐渐走进大众的生活。那么,你是否想过自己也能搭建一套知识付费课程系统,分享你的智慧,实现知识的价值最大化呢?接…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏,而且录屏效率太慢,本文将介绍你一种高效率的工具,小浪助手.exe,它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了,有需要的自己下载一下 注意&#xf…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念,它允许在运行时选择不同的函数实现,以适应不同类型的对象。 多态的种类 编译时多态性(Compile-time Polymorphism):也称为静态多态性或早期绑定,指在编译时确…

容联云孔淼:大模型落地与全域营销中台建设

近日,由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开, 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席,并分享数智化转型实践经验。 他分享了容联云两大核心产品,“大模型应用容犀Copilot”在金融营…

SpringBoot Actuator未授权访问漏洞的解决方法

1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能,帮助你了解应用程序的运行状况,以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味,作为中国传统美食的代表之一,历经千年的传承与发展,早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代,嘴尚绝卤味凭借其独特的口感和精湛的工艺,成为卤味市场中的佼佼者,引领着卤味文化的新潮流…

Linux(openEuler、CentOS8)常用的IP修改方式(文本配置工具nmtui+配置文件+nmcli命令)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09;---- 一、知识点 &#xff08;一&#xff09;文本配置工具nmtui(openEuler已预装) nmtui&#xff08;NetworkManager Text User Interface&#xff09;是一…

【系统架构师】-案例篇-UML用例图

1、概述 用于表示系统功能需求&#xff0c;以及应用程序与用户或者与其他应用程序之间的交互关系。 2、组成 参与者&#xff08;Actors&#xff09;&#xff1a;与系统交互的用户或其他系统。用一个人形图标表示。用例&#xff08;Use Cases&#xff09;&#xff1a;系统需要…

大家都是怎么写毕业论文的? 推荐4个AI工具

写作这件事一直让我们从小学时期就开始头痛&#xff0c;初高中时期800字的作文让我们焦头烂额&#xff0c;一篇作文里用尽了口水话&#xff0c;拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业&#xff0c;结果毕业前的最后一道坎拦住我们的是毕业论文&#xff0c;这玩意不…

c++ 入门2

五. 函数重载 函数重载&#xff1a;是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同&#xff0c;常用来处理实现功能类似数据类型 不同的问题。 1、参数类型不同 #inc…

【ITK配准】第十一期 空间对象的模糊构建配准样例

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK配准中的空间对象的模糊构建配准样例,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 空间…

2024软件测试自动化面试题(含答案)

1.如何把自动化测试在公司中实施并推广起来的&#xff1f; 选择长期的有稳定模块的项目 项目组调研选择自动化工具并开会演示demo案例&#xff0c;我们主要是演示selenium和robot framework两种。 搭建自动化测试框架&#xff0c;在项目中逐步开展自动化。 把该项目的自动化…

【高阶数据结构(二)】初识图论

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:高阶数据结构专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; 高阶数据结构 1. 前言2. 图的基…

vector、heap数组、stack数组访问性能验证

测试目的 本次测试旨在比较不同数据结构&#xff08;vector、数组&#xff09;以及不同访问方法&#xff08;[]、at()、offset&#xff09;在性能上的差异&#xff0c;从而为开发者提供在特定情境下做出最佳选择的依据。 测试代码 测试网址:Quick C Benchmarks 使用GCC9.5 …