从最浅层剖析C语言——第四节(超详细讲解一维数组内容)

news2024/11/15 7:17:07

目录

1. 数组的概念

2. 一维数组的创建及其初始化

2.1 数组的创建

2.2 数组的初始化

考点总结:当我们未对数组进行初始化时,数组里面的元素打印出来是乱码,但哪怕只对数组里面一个元素赋值,之后未被赋值的元素也会默认赋值为0

3. 一维数组的使用

3.1 下标引用操作符

3.2 数组的输入

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


1. 数组的概念

数组是一组相同类型元素的集合

注意;数组中可以存放一个或者多个数据,但是不能让数组里面的元素个数为0

数组中存放的每一个数据,它们的类型是相同的

数组分为一维数组和多维数组,多维数组中常见的一般为二维数组

2. 一维数组的创建及其初始化

2.1 数组的创建

一维数组创建的语法如下:

type(类型) arr_name[常量值]

其中type就是对数组中所存放的数据类型做出一个定义,这个类型可以是char、int、short int、double等等类型的数据

arr_name值得就是数组的名字,这个名字可以由程序员自己根据实际情况而起名

常量值就是用来指定数组的大小的,这个数组的大小是根据实际的需求指定的

比如现在我想要创建一个数组来存放我们学校1000个人的年龄大小

就如上图这样,这个数组就创建成功了

数组里面元素的类型和数组的名字,都是我们根据情况所设定的

比如数组就还可以用来存放名字,体重

2.2 数组的初始化

在我们之前学习变量的时候,我们就知道我们一开始需要给变量赋值,这被称为变量的初始化,同理,我们根据我们的需要创建了数组后,那我们自然也同样需要对数组进行一个初始化

那么数组应该如何进行初始化呢???

数组的初始化一般使用大括号进行,只需要将数据放入大括号里面即可

这样便将age数组里面的五个元素分别初始化为5,4,3,2,1

那肯定有人想问了,如果我们不初始化数组的话,数组里面的元素默认会是几呢?

大家可以看到,如果不初始化数组,那么打印数组内部的各个元素出来的将会是一些乱码

那又有一个问题了,将数组每一个元素都需要一个一个的初始化实在是太麻烦了,如果我们只初始化几个,那剩下的未被初始化的数组元素打印出来还会是乱码吗?

可以看得到,在我们只对数组一个元素命名为0时,其他元素最后也默认为0

而我们对数组一个元素命名为其他数字的时候,其他未被命名的数组元素也同样默认为0

考点总结:当我们未对数组进行初始化时,数组里面的元素打印出来是乱码,但哪怕只对数组里面一个元素赋值,之后未被赋值的元素也会默认赋值为0

所以我们经常对数组初始化采用只对数组里面第一个元素赋值为0,来进行数组的初始化

2.3 数组的类型

数组本身也是有类型的,但数组的类型和我们之前学习到的变量的类型是有很大区别的,比如上面所写的

int  age  [5]

char name[5]

这些数组的类型实际上就是去除数组名之后剩下的东西

比如第一个数组的数组类型就是:int  [5]

下一个就是:char [5]

3. 一维数组的使用

3.1 下标引用操作符

我们可以用一维数组来存放我们的数据,那么我们存放之后如何提取呢???

这就要提到一个操作符:下标引用操作符[ ]

C语言本身规定数组是有下标的,下标从0开始,如果数组有n个元素,那么最后一个元素的下标就是n-1,下标本身就相当于数组里面每一个元素的代号

当我们需要具体提取哪一个数组元素的时候,使用下标引用操作符就会变得十分简单

现在我们来实践一下,使用下标引用操作符精确找到我们在数组中所存储的信息

通过下标引用操作符,我们就精确打印出了下标为三的数组元素,这其实也侧面反映了,在我们对于数组进行初始化的时候,是按照从左到右的顺序依次给下标为0,下标为1等等的数组元素进行赋值

3.2 数组的输入

在明白了下标引用操作符的工作原理之后,我们就可以继续让我们自己输入数据到数组里面存储起来了

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

前面的知识就是对一维数组的使用,但为了让大家更加深入了解一维数组,我们要先深入了解一下数组在内存之中的存储

我们先来依次打印出数组元素的地址看看

如上图所示,我们仔细观察一下这些数组元素的地址我们就可以发现,下一个元素的地址比上一个元素的地址要多上4

这里额外补充一点,在十六进制中,10用a表示,11用b表示,12用c表示,以此类推

所以上面的C实际上就是12的意思

总结:数组中的元素随着下标的增长,地址是由小到大逐渐变化的,而每两个元素之间相差四,正是因为一个整型类型所占的空间是四个字节

所以我们可以知道数组在内存中是连续存放的

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

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

相关文章

Dijkstra(c++)

迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略&#…

《晶核》服务器架构——第二篇

继上面的第一篇文章,没看的可以翻一下。还是进程数量多的问题? 副本问题怎么解决?服务器该如何设计? 按照他们这个做法是副本与场景都是地图,所以就造成了下面这样的问题。假如,我有1万人的在线数量&…

从源码开始:在线教育系统与网校APP的架构设计与开发实践

这篇文章将从源码层面探讨在线教育系统与网校APP的架构设计与开发实践,帮助开发者理解核心技术与实现路径,进而打造功能全面、性能优异的在线教育平台。 一、在线教育系统的核心功能模块 在设计在线教育系统时,首先需要明确其核心功能模块。…

PCL区域生长分割

文章目录 一、算法原理1、输入2、初始化3、算法二、代码部分三、代码解释参考文献本文,我们将学习如何使用 pcl::RegionGrowing 类中实现的区域生长算法。该算法的目的是合并在平滑度约束方面足够接近的点。因此,该算法的输出是簇的集合,其中每个簇被认为是同一光滑表面的一…

NASA:北极辐射-冰桥海冰实验(ARISE)2014年原地云数据产品

ARISE_Cloud_AircraftInSitu_C130_Data 简介 ARISE_Cloud_AircraftInSitu_C130_Data_1是北极辐射-冰桥海冰实验(ARISE)2014年原地云数据产品。该产品是位于华盛顿的美国宇航局科学任务局地球科学部辐射科学、冰冻层科学和机载科学计划共同努力的成果。…

Mysql高可用之组复制 (MGR)从原理到实战一篇解决

一:原理 简介: MySQL Group Replication(简称 MGR )是 MySQL 官方于 2016 年 12 月推出的一个全新的高可用与高扩展的解决方案。 组复制是 MySQL 5.7.17 版本出现的新特性,它提供了高可用、高扩展、高可靠的 MySQL 集群服务 MySQL 组复制分…

如何优雅处理异步组件加载:Vue 3 的 Suspense 特性

在日常开发中,我们可能会遇到网络不佳或内容加载时间较长的情况。如果当前页面没有任何内容提示,用户的体验非常糟糕,可能会反复刷新以便加载成功。因此,我们需要给用户提供一个加载中的效果,告知用户“我在努力加载中…

怎样快速搭建 Linux 虚拟机呢?(vagrant 篇)

作为一名Coder(程序员或码农),供职于中小型互联网公司,而你恰恰偏向于服务端,那么,产品部署在生产环境的艰巨任务,便毫无疑问的落在你身上了。 只有大厂(大型互联网)企业…

程序员:全栈的痛你不知道

上周一个同事直接对我开喷,骂我无能,说:“你怎么一个人就搞不定所有系统呢?”,我半支烟纵横IT江湖14余年,还是第一次被人这么嫌弃。 事情缘由 某公司的业务线特别多,有个业务线前后端项目共计…

新手入门:Python+Selenium自动化测试(爬虫),如何自动下载WebDriver!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 自动下载WebDriver 📒📝 安装📝 使用📝 支持主流浏览器⚓️ 相关链接 ⚓️📖 介绍 📖 好久没有使用Selenium的自动化(爬虫)了,还记得那个时候使用Python+Selenium进行爬虫项目还需要手动下载Webdriver。每次换浏…

SSRF攻击

目录 1、curl_exec函数 2、dict协议 3、file协议 4、Redis未授权访问 5、gopher协议 6、SSRF 定义: 原理: 防御: ssrf实现.ssh未创建写shell 1、环境搭建 2、实施攻击 2.1、生成公钥 2.2、用SSH公钥数据伪造Redis数据 2.3、攻…

Python | Leetcode Python题解之第368题最大整除子集

题目: 题解: class Solution:def largestDivisibleSubset(self, nums: List[int]) -> List[int]:n len(nums)nums.sort()dp [1]*nres [[nums[i]] for i in range(n)]ans res[0]for i in range(n):for j in range(i):if nums[i] % nums[j] 0 and…

ECCV`24 | 艺术文本和场景文本分割任务新SOTA 方法!华科Adobe提出WAS!

文章链接:https://arxiv.org/pdf/2408.00106 git链接:https://github.com/xdxie/WAS_WordArt-Segmentation 亮点直击 提出了艺术文本分割这一新任务,并构建了一个真实数据集用于模型性能基准测试。 设计了训练数据合成策略,生成了…

PyCharm汉化:简单一步到胃!PyCharm怎么设置中文简体

最近在弄python的项目 一起加油哦 步骤: PyCharm的汉化可以通过两种主要方法完成: 方法一:通过PyCharm内置的插件市场安装中文语言包 1. 打开PyCharm,点击File -> Settings(在Mac上是PyCharm -> Preferences…

集合及数据结构第十一节————排序

系列文章目录 集合及数据结构第十一节————排序 排序 排序的概念排序运用常见的排序算法插入排序选择排序交换排序归并排序排序算法复杂度及稳定性分析其他非基于比较排序排序练习题 文章目录 系列文章目录集合及数据结构第十一节————排序 一、排序的概念及引用1.排序…

(免费领源码)python#Django#msyql学生个性化培养的教学资源平台的设计与实现19385-计算机毕业设计项目选题推荐

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对学生个性化培养的教学资源平台等问题&#…

独角数卡,打开商品列表出现Undefined variable form的解决办法

前言 独角数卡,打开商品列表出现了ErrorException In GoodsController.php line 95 : Undefined variable: form ErrorException In GoodsController.php line 95 : Undefined variable: form#0 app/Admin/Controllers/GoodsController.php(95): Illuminate/Foundation/Boots…

应用层协议(上)Http(URL、Cookie、Session)内含逻辑图解通俗易懂!

绪论​ “少年没有乌托邦 心向远方自明朗”,本章是应用层常用且重要的协议htttp,没看过应用层建议一定先看那一篇后再看本章才能更好的去从上到下的理解应用层。 话不多说安全带系好,发车啦(建议电脑观看)。 1.Http协…

【HZHY-AI300G智能盒试用连载体验】评测视频教程

前段时间,我参加了HZHY-AI300G智能盒试用,在电子发烧友论坛和CSDN发布了相关内容。应厂商要求,录制了相关的操作视频,现在已经发在B站了,欢迎大家观看。 【RK3588】HZHY-AI300G平台应用 1. 智能盒硬件接口介绍_哔哩哔哩…

计算机Java项目|基于SpringBoot的经方药食两用服务平台的设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参…