版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章数组第八章数组数组是是一组有序的、同类型数据的集合,这些数据称为数组元素。数组元素在内存中占据连续的存储空间。同一数组中元素的类型相同。根据数组中元素具有下标的个数可以把数组分为:一维数组、二维数组和多维数组。一、一维数组的定义当数组中每个元素只有一个下标的数组称为一维数组。一维数组的定义方式为:
类型名数组名[常量表达式];例如:intarray[10];它表示定义了一个名为array的数组,此数组有10个元素,每个元素的数据类型为整型。第一节一维数组一维数组定义的说明:1.类型名用来说明数组元素的数据类型,可以是以前介绍过的任一种数据类型。2.数组名由用户指定,命名规则和变量名相同,遵循标识符定义规则。3.常量表达式规定了数组元素的个数,即数组的长度。整个数组所占字节数=类型长度×数组长度。4.常量表达式中不能包括变量,即C语言不允许定义动态数组。5.常量表达式中可以包括常量和符号常量。6.每个数组元素只有一个下标,C语言规定数组第一个元素的下标总为0(称为数组的下界)。7.定义数组后,C编译程序即为该数组在内存中开辟相应个数的存储单元,每个存储单元可以直接用相应的数组元素表示。8.数组定义中,数组长度除多数情况下作显式说明外,有两种情况下不必或不能用长度说明,而用[]代替。(1)给数组全体元素赋初值时,可省去数组长度说明。(2)数组名作为函数的参数,在函数的参数说明部分,当指出参数是数组时,不能用长度说明。二、一维数组的初始化当系统为所定义的数组在内存中开辟一串连续的存储单元时,这些存储单元中并没有确定的值,数组的初始化就是指在定义数组时给数组元素赋初值。一维数组初始化的定义形式为:类型名数组名[常量表达式或省略]={值0,值1,……};其中,{}中各值是对应的数组元素初值,各值之间用逗号隔开。例如:
inta[5]={0,1,2,3,4};也可以省略为:
inta[]={0,1,2,3,4};说明:1.可以只给部分数组元素赋初值。当{}中值的个数少于数组元素个数时,则表示初值只赋于数组开始的若干个元素,余下部分元素为相应类型的缺省值,int为整型数0,字符型为空格等。2.{}中值的个数不能超过数组元素的个数。3.只能给数组元素逐个赋值,不能给数组整体赋值。4.对较大数组中的若干不连续的数组元素赋予非零的初值,其余数组元素为0值时,可以用“,”表示对应位置的元素为0值。5.若全部元素均赋为0,可对数组不赋初值。6.C语言中,还可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小。例如:
inta[]={1,2,3}此时就隐含的定义了a数组含有3个元素。三、一维数组元素的引用
在定义数组之后,数组元素就可以被引用了。引用一维数组元素的一般形式如下:数组名[下标表达式];数组名后的一对方括号是不可缺少的,下标表达式可以是由整型的常量和变量构成的表达式。例如:
inta[5]={10,20,30,40,50};可以使用a[0]表示第一个元素,即a[0]==10;…a[4]表示最后一个元素,即a[4]==50说明:(1)数组中的元素其实就是一个变量,占用一个存储单元。如数组a中的变量就是普通的int类型的变量,该类型变量的一切合法操作对于数组元素来说都是正确的。例如:
a[0]=5;a[0]++;a[1]=a[0]+14;printf(“%d”,a[4]);(2)引用数组元素时,下标表达式的值的上限为定义时的常量表达式减1,下限为0。在引用时,要保证下标不能超过定义时的常量表达式减1,即下标不能越界。例如,定义了inta[5];下标不能超过4,否则越界溢出,编译出错。(3)数组是一个构造类型,是集合的概念,一次不能整体引用数组里的所有元素。企图简单的通过数组名a整体代表其中的5个int类型的变量是不行的。第二节二维数组先看一个例子:某校近三年招收各专业毕业生情况如下:
计算机电子管理数学
20029040803020031005090402004954510050
要把这些数据组织起来,可以有两种选择:
⑴按从左到右从上到下的顺序存入一个一维数组中。(查询困难)
⑵每年用一个一维数组,把这些数据分别存入三个数组中。(增加一年数据困难)一、二维数组的定义当数组元素的下标为两个时,该数组称为二维数组。1.二维数组的定义格式存储类型数据类型数组名[常量表达式1][常量表达式2];功能:定义一个二维数组,有“长度1×长度2”个元素。其元素的存储类型和数据类型分别由定义中的“存储类型”和“数据类型”指定。说明:(1)存储类型、数据类型、数组名和长度的含义和选取方法同一维数组。(2)数组元素的各维下标从0开始,最大下标为“长度1”。2.二维数组的逻辑结构和存储结构二维数组的逻辑结构,可以看成是由若干行,每行由若干列组成。例如有如下数组定义语句:inta[3][4];则其逻辑结构如下:
a[0][0]a[0][1]a[0][2]a[0][3] a[1][0]a[1][1]a[1][2]a[1][3] a[2][0]a[2][1]a[2][2]a[2][3]二维数组存储结构是“按行存放,先行后列”,
说明:(1)数组名是用户定义标识符(2)数组名后面的两对方括号必不可少,之间不能有空格。方括号中必须是常量表达式,表达式1表示数组的行数,表达式2表示数组的列数。其中必须是正的整型常量,绝对不能是变量。(3)定义后,a数组在内存中占用6个连续的存储单元,按照行的顺序依次存储各个元素。见书p75图8-2、图8-3.
(4)可以把二维数组看成是一个特殊的一维数组。二、二维数组的初始化在定义二维数组之后,系统只是在内存中开辟了一系列的连续存储单元,并没有对每一个数组元素进行赋值。因此,我们在定义数组之后要进行初始化。二维数组初始化的方法有以下几种。(1)分行给二维数组所有元素赋初值。例如:inta[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};初始化后,a[1][2]的值即是6。(2)每行的初始值数可以少于该行元素的个数,此时系统对为赋值的元素默认为0.例如:inta[3][4]={{0,1},{4},{8,9,10}};初始化后,问a[0][1]和a[2][3]的值即为1和0。(3)行数也可以少于数组应有的行数,此时系统对未赋值的行中所有元素默认为0.例如:int
a[2][3]={{10,20,30}};初始化后,第0行的三个元素初值分别为10,20,30,但未赋值的第1行所有元素的初值均默认为0.(4)可以省略内层的花括号对。例如:inta[2][3]={10,20,30,40,50,}(5)定义语句中的表达式1(行数)可以省略,但是表达式2(列数)不能省略。如:inta[][3]={{10,20,30,},{40,50,60}};
该句省略了定义语句中的常量表达式1。系统会根据后面赋初始值的情况来判断,
注意:给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数。下列的定义是错误的:9.5.4通过赋值定义二维数组的大小在定义一个二维数组时,可以通过赋初值的个数来确定数组的大小,但只可以省略第1个方括号的常量表达式,而不能省略第2个括号的常量表达式。例如:inta[][2]={{1,2},{3},{4},{5}};以上语句中,a数组中的第一维的常量表达式省略,在所赋初值中,有4对行向量,则第一维的大小可由所赋初值的行数来确定。即等价于:inta[4][2]={{1,2},{3},{4},{5}};当使用行花括号赋初值时,第1维的大小由赋初值的行数来决定。当省略行花括号时,第1维的大小按以下规则来决定:(1)当初值的个数能被第2维的常量表达的值除尽时,所得商数就是第1维的大小;(2)当初值的个数不能被第2维的常量表达的值除尽时,则: 第1维的大小=所得商数+1例如:inta[][2]={1,2,3,4};按此规则,a数组的第一维大小应该是2,即inta[2][2]={{1,2},{3,4}};9.5.2二维数组元素的引用二维数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南长沙人才集团有限公司见习人员招聘1人考试参考试题及答案解析
- 2026年大庆萨尔图区会战街道社区卫生服务中心招聘1人考试参考题库及答案解析
- 2026广西南宁市兴宁区五塘镇中心学校春季学期顶岗教师招聘考试参考试题及答案解析
- 2026青海海南共和县第三寄宿制小学选聘政府临聘人员1人考试备考试题及答案解析
- 2026江西九江市田家炳实验中学临聘教师招聘2人考试参考试题及答案解析
- 2026年1月重庆市綦江区人民政府东林街道办事处招聘公益性岗位人员3人考试备考试题及答案解析
- 2026昌吉州宝石花医院招聘(8人)考试备考题库及答案解析
- 2026山东第一医科大学附属皮肤病医院招聘博士研究生工作人员3人考试参考题库及答案解析
- 2026福建南平市公安局莒口派出所招聘警务辅助人员2人考试参考题库及答案解析
- 2026中陕核工业集团二一四大队有限公司招聘(18人)考试参考试题及答案解析
- 2026年药店培训计划试题及答案
- 2026春招:中国烟草真题及答案
- 急性酒精中毒急救护理2026
- 2021-2022学年天津市滨海新区九年级上学期物理期末试题及答案
- 江苏省苏州市、南京市九校2025-2026学年高三上学期一轮复习学情联合调研数学试题(解析版)
- 2026年中国医学科学院医学实验动物研究所第三批公开招聘工作人员备考题库及答案详解一套
- 2025年幼儿园教师业务考试试题及答案
- 国家开放大学《Python语言基础》形考任务4答案
- (自2026年1月1日起施行)《增值税法实施条例》重点解读
- 2026春小学科学教科版(2024)三年级下册《4.幼蚕在生长》教学设计
- 管道安装协议2025年
评论
0/150
提交评论