




免费预览已结束,剩余43页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数组 在C 中 数组是一种常用的工具 它能在一个集合中存储多个对象 我们在这一章将给大家介绍什么是数组以及如何使用数组 特别是一维数组 多维数组和交错数组 5 1初识数组 在生活中我们见到过这样的情景 图书馆中藏有上亿本书 但是要找出我们需要的一本时并不难 这是因为图书馆的所有书都已经编号放在相应的书架上了 书架是分类存储的 它有如下特点 1 分类存放 易于查找 2 书架的格子提供了存储空间 3 物品进行了分类 每一类都有名字 4 每本书都有位置编号 这种方式可以有效大量地存储书籍 同样的办法可以用到C 中 存储一组需要一起处理的数据 数组用来将相同数据类型存储在存储单元里 数组的所有元素必须属于相同的数据类型 一个图书存储与数组存储的对应图来了解一下数组中包含的一些内容 如下图 左 所示 下面看一个整型数组的例子 下图 右 5 2基本数组 我们先从最基本的数组给大家讲起 其中包括数组的声明 初始化 引用 赋值以及利用foreach对数组进行遍历 5 2 1声明数组 数组声明的格式如下图所示 示例5 1 以下代码演示的是数组的声明方式 char bookName C Unleashed 5 2 2数组的初始化 数组必须在访问之前初始化 数组的初始化是通过赋值实现的 有两种方式 第一种是以字面形式指定数组的完整内容 格式如下图所示 使用字面值指定数组 元素值必须用逗号隔开 并全部放在花括号中 例如 int myIntArray 5 9 32 65 2 第二种方式是指定数组的大小 再使用new关键字初始化所有数组元素 格式如下图所示 示例5 2 以下代码演示的是数组的两种初始化方式的组合 需要提醒大家注意的是 使用这种方式 数组大小必须与元素个数相匹配 示例5 3所示的例子是错误的 示例5 3 以下代码演示的是错误的数组的初始化方式 5 2 3数组引用 在C 语言中 对数组的引用其实就是对数组元素的逐个使用 一维数组的引用形式以及相关举例如下图所示 注意 C 语言规定不能一次引用整个数组 引用时只能逐个元素引用 5 2 4数组的赋值 数组可以在初始化时就赋值 也可以先初始化后赋值 需要注意的是赋值时不能够批量处理 必须是单个进行 如果定义的数组是基本数据类型 即int型 float型 double型 char型和bool型 在C 中定义数组后 若没有指定初始值 则依据数据类型的不同 会给数组元素赋予一个默认值 如下表所示 数组属于一种引用类型 因此如果将数组名b赋给数组a 那么数组b在操作数组元素时 实质上操作的还是数组a 如下图所示 5 2 5遍历数组 C 提供了foreach语句对数组元素进行遍历 该语句提供了一种简单 明了的方法来循环访问数组中的元素 1 foreach语句foreach语句属于循环语句中的一种 它的基本格式如下图所示 foreach语句对数组或集合 稍后会讲到 中的所有元素进行逐个代入 当全部代入完成后 控制传递给foreach后的下一个语句 2 用foreach语句遍历数组用foreach语句遍历数组即对数组中的所有元素进行逐个代入 直到全部完成或者出现跳出语句 需要提醒大家注意的是 使用foreach语句对数组进行遍历时 对于数组内容只能进行只读访问 而不能改变任何元素的值 5 3特殊数组 我们前面见到的都是一维数组 是最常见最基本的 除了一维数组以外 还有一些较特殊的数组 如多维数组 数组的数组 我们这一节将给大家介绍这两种特殊数组 5 3 1多维数组 多维数组中最常用的是二维数组 我们先介绍二维数组 再介绍其他维数组 1 二维数组的声明二维数组是最常见的多维数组 它由行和列组成 每行包含相同的列数 因而使数组称为矩形形状 二维数组的声明格式如下图所示 2 二维数组的初始化二维数组的初始化与一维的没有多大区别 只是中间多了一个逗号 两边需标明数组的行数和列数 如下图所示 还有一种也比较常用的初始化方式 如下图所示 在二维数组中 通常把行数称做行下标 列数称做列下标 二维数组实质是由多个一维数组组成 具体说明如下图所示 18 3 二维数组的赋值二维数组可以在初始化时随即进行赋值 也可以进行单独的赋值 下面给大家列举三种常用的赋值方法 以下代码演示的是二维数组的赋值方式 4 二维数组的引用二维数组的引用形式如下图所示 5 利用foreach语句遍历二维数组foreach循环语句也可以访问二维数组中的所有元素 其方式与访问一维数组相同 6 三维数组简介虽然C 语言对于数组的维度并没有上限 但是处理高维数组是很头疼的事 一般尽量避免处理四维或高于四维的数组 在此我们只对三维数组做一个简单介绍 同二维数组声明格式类似 三维数组在声明时只需要在中括号中用两个逗号隔开即可 如下图所示 比如声明了这样一个三维数组int calories newint 3 6 3 为了便于大家理解 右图给出了三维数组的详细存储方式 演示的是三维数组的声明及赋值方式 5 3 2交错数组 交错数组也称为数组的数组 是一种不规则的二维数组 因此也被称为锯齿形数组 它与二维数组 矩形数组 最大的区别就在于每一行的长度并不相同 我们可以把它想象成由不同长度组成的一维数组组成的二维数组 如下图所示 数组的每一行的长度不同 因此称其为 交错 这样做比规则的矩形数组节省了内存空间 代价就是在创建和使用时也要按照其特点进行操作 1 交错数组声明交错数组的声明格式如下图所示 以下代码演示的是上图所示的交错数组的声明方式 int jaggedArray newint 4 2 交错数组初始化和赋值若以行位单位对交错数组进行初始化 然后对每个元素进行赋值 则应如图所示 也可以直接给交错数组初始化赋值 如下图所示 还可以在声明的同时初始化 如下图所示 5 4对数组的使用 有时候对数组的合理利用将使编程变得比较容易 我们在这一节就来给大家介绍一下如何利用数组 主要从两大方面去讲 数组作为方法参数以及类中的数组 5 4 1数组作为方法参数 数组可以作为参数传递给方法 因为数组是引用类型 所以方法可以改变数组的值 数组作为方法参数的格式及举例如下图所示 根据参数类型不同调用方法不同 分为普通参数 ref参数 out参数和params参数来介绍数组作为方法参数的利用 2020 3 19 方法就是函数 你可以这样来理解 方法是某个类的功能或者行为 如 动物会进食 那么 进食 就是 动物 类的一个方法 从语法上来说 方法有以下几个要素 访问权限 如省略则为private 返回类型 如果不需要返回则写void 函数名 参数 可以没有 也可以有多个 函数体 如果返回类型不为空 那么函数体中必须要返回一个符合类型要求的返回值 2020 3 19 以下是一个例子 这是一个动物类publicclassAnimal public是访问权限 void是返回类型 代表该方法不需要返回值 Eat是函数名 假设已经有Food这个类 food是参数publicvoidEat Foodfood 动物进食的相关代码 1 普通参数根据数组分为一维数组 多维数组和交错数组 作为参数时也分为一维数组作为参数 多维数组作为参数以及交错数组作为参数 交错数组作为参数不常见 这里将不再介绍 将一维数组作为参数传递将一维数组作为参数的格式如下图所示 下面的代码就将一维数组array作为参数传递给了方法PrintArray voidPrintArray int array methodcode 也可以在一个步骤中初始化并传递新数组 则上述代码应该改写为PrintArray newint 1 3 5 7 9 也可以将多维数组传递给方法 如果声明了一个多维数组Array 则将其作为参数时应该是voidPrintArray int arr methodcode 也可以在一个步骤中初始化并传递新数组 则上述程序应改为PrintArray newint 1 2 3 4 5 6 7 8 2 ref参数数组类型的ref参数 格式就是在数组前加上ref 与所有的ref参数一样 数组类型的ref参数必须由调用方明确赋值 3 out参数数组类型的out参数 格式即在数组前加上out 在使用数组类型的out参数前必须先为其赋值 即必须由被调用方为其赋值 在示例6 16所示的例子中 在Main 方法中声明数组theArray 并在FillArray 方法中初始化此数组 然后将数组元素返回调用方并显示 4 params参数当一个方法的参数是数组类型且参数前加了params修饰符时 该参数属于数组类型的params参数 关键字params只需要在方法的参数列表中出现 通过加关键字params 方法被调用时 可以传递一个值给参数 也可以传递一个数组或者任意个数值 也就是参数的个数是任意的 这样就保证了方法的灵活 5 4 2类中的数组 在类中 可以声明一个数组型的字段 可以实例化一个数组型的对象 还可以将数组作为一种返回类型 1 数组型的字段在一个类中将数组作为字段与普通类型一样 格式如下图所示 数组型字段可以在声明时赋值 在类中的使用与其他类型一样 2 作为对象的数组在C 中 可以声明数组型的对象 示例6 19 演示的是声明数组型的对象 3 数组作为返回类型数组可以作为参数传递给方法 同样方法也可以将数组作为返回类型 如下程序所示 publicstaticint GetScores refintgameCnt 对这个方法的调用可以如下所示 int points newint 1000 points GetScores refgameCnt 5 5对数组的操作 对数组的操作包括很多 如复制数组 得到数组中某个元素的值 清空数组等 这些操作在前面有的已经涉及到了 但是比较复杂 如果能有一种方法可以将数组作为参数传入 调用方法后直接就能实现想要的结果 编程就能节省不少时间 C 提供了这样的方法 这些方法不管是什么类型 都可以从Array类继承属性 我们在这一章就来介绍这些方法 5 5 1清空数组 想要将一个数组中的元素设置为0 false或null 具体取决于元素类型 需要用到Clear 方法 该方法有三个参数 如下图所示 5 5 2创建数组副本 如果想要创建一个数组的副本 则需要用到Clone 方法 这个方法不需要用到参数 5 5 3复制一部分元素给另一数组 如果想要将一个数组中的一部分元素复制给另一个数组 需要用到Copy 方法 该方法的参数列表及说明如下图所示 5 5 4将当前一维数组的所有元素赋值到指定的一维数组中 如果想要将当前一维数组的所有元素赋值到指定的一维数组中 需要用到CopyTo 方法 该方法的参数列表如下图所示 5 5 5获取某个元素的值 前面我们用其他方法获取过某个元素的值 这儿我们介绍一种可以直接获取某个元素的值的方法 GetValue 这个方法只需要一个参数 这个参数表示要获取的值的索引 5 5 6获取元素的索引值 如果想要获取某个元素的索引值 需要用到IndexOf 方法 该方法的参数列表如下图所示 5 5 7获取某元素最后匹配项的索引 在一维数组中 如果同一元素出现了好几次 想要获取该元素最后匹配项出现的索引值 需要用到LastIndexOf 方法 该方法的参数列表如下图所示 5 5 8反转一维数组中的元素顺序 如果想要将一维数组中的元素顺序反转 需要用到Reverse 方法 如果是将全部元素反转 则方法中只要一个参数即可 这个参数就是数组名 示例6 27 以下代码演示的是利用Reverse 方法将数组全部元素反转 但是如果只是将一部分元素反转 则方法中需要有三个参数 参数列表如下图所示 示例6 28 以下代码演示的是利用Reverse 方法将部分元素反转 5 5 9为数组中的某个元素重新赋值 如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轨道交通施工方案在哪找
- 徐州开土方外运施工方案
- 机械送料机选购方案范本
- 2025建筑混凝土材料购销合同范本
- 2025年上海建筑工程分包合同协议书
- 竞标方案合同范本
- 交通安全员考试题库真题及答案解析
- 安全科学原理期末测试题及答案解析
- 冬季pe管热熔施工方案
- 2025年古代贵族考试题目及答案
- 清华大学实验室安全教育考试题库(全)
- 项目经理(总监)解锁申请表
- 物业管理存在的问题与对策
- 前列腺等离子电切术护理查房
- 儿童神经心理行为发育
- GB/T 4074.8-2009绕组线试验方法第8部分:测定漆包绕组线温度指数的试验方法快速法
- GB/T 19812.3-2017塑料节水灌溉器材第3部分:内镶式滴灌管及滴灌带
- GB/T 1682-1994硫化橡胶低温脆性的测定单试样法
- 企业消防安全基础知识培训讲义课件
- 商务英语翻译实务完整版教学ppt课件全套教程
- 第五章-中药指纹图谱课件
评论
0/150
提交评论