1 / 18
文档名称:

第11章 同一类型多个元素的集合——简单数组.ppt

格式:ppt   页数:18
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第11章 同一类型多个元素的集合——简单数组.ppt

上传人:燕赵才子 2011/7/19 文件大小:0 KB

下载得到文件列表

第11章 同一类型多个元素的集合——简单数组.ppt

文档介绍

文档介绍:第11章同一类型多个元素的集合——简单数组
在实际的程序设计和代码编写中,经常会用到大批同类型的数据,比如某个班学生的成绩等,为方便解决这类问题,C语言提供了数组这一数据结构,这里的数据结构,可理解为数据的存放和管理方式。
和普通变量一样,在使用数组前必须先对其声明以开辟所需要的内存空间,由于数组是很多数据的集合,这些数据对应的内存单元是如何排列的,这都是本章要解决的内容。
什么是数组
程序经常使用同类型的数据,比如要处理某个班级的学生成绩信息,如果只有几个学生,我们可以使用几个同类型变量,比如:
int mark0, mark1, mark2, mark3, mark4;
这样,便可以存放5个学生的成绩,但如果是几百人呢?要一直这么写下去么,如果读者觉得继续写下去没什么不妥的话,那几千甚至几万人呢,所以,如何合理组织大量同类数据是个问题。
合理组织的含义包括:
(1)为每个数据分配存储空间。
(2)每个数据应当有唯一的标识符进行读写和查找。
在这种应用背景下,数组应用而生,成功地解决了上述问题。
数组是一大片连续内存空间
声明一个数组时,编译器为数组分配内存存储空间,值得注意的是:数组占据的内存空间是连续的,这样,很容易计算数组占据的内存大小和每个元素对应的内存首地址,举例来说,对一个大小为N,类型为short的数组,其占据的内存大小为:
N*sizeof(short)=N*2
如果说第1个元素在内存中的地址为p,那么第M个元素(M不大于N)在内存中的地址可表示为:
p+(M-1)*sizeof(short)
这充分体现了数组的有序性。
数组元素的访问
下面来看要解决的第2个问题“每个数据应当有唯一的标识符进行读写和查找”,这是通过下标来实现的,以一维数组为例,元素的访问形式为:
数组名[下标]
举例来说,有一个数组,名为mark,里面记录着全班60个人的成绩,mark中的第1个元素可写为mark[0],第2个元素为mark[1],第3个元素为mark[2],由此类推,第60个元素为mark[59],好了,结束。这点很重要,记住,mark[60]是没有意义的,对一个大小为N的数组来说,有效的下标为0到N-1,不在此范围的下标访问都会引发越界错误。
了解了数组的基本组织形式,下面的章节具体看下如何使用数组解决实际问题。
一维数组
一维数组也称向量,用以组织具有一维顺序关系的一组同类型数据,在使用数组前,必须先声明数组,编译器根据声明语句为其分配内存,这样数组才有意义。
一维数组的声明
要在内存中开辟一块连续内存给数组用,需要考虑以下问题,一是在哪里开辟,而是开辟多大的地方,C语言中,这都是由编译器自动完成的,编程人员说要做的是“提要求”,即所开辟的数组应能盛放多少个元素,每个元素是什么类型,另外,编程人员还要指定数组名。
一维数组声明的基本格式为:
类型数组名[数组元素个数];
比如,声明语句:
double sz[6];
告诉编译器3条信息:数组名是sz,存放的元素是double型,数组存放的元素个数为6,这样,便可以对数组及数组元素进行读写访问。
一维数组元素的访问
上节中也已经提过,要防止下标越界的错误发生,对上面声明的数组sz来说,有效的下标是0到5,在程序中如果出现了sz[6],编译器有时并不会报错,但这可能引起程序的崩溃。
通过实例来看一下一维数组元素的访问方式,见。
数组的初始化
存在潜在的安全隐患:没有对数组元素初始化,因为立即采用键盘输入为数组元素赋了值,貌似问题不大,但如果需要对代码修改,不小心在赋值前便使用了数组元素,这时,因为初始化时内存单元内容的不确定,程序输出的结果往往是不可预料的。
不仅仅是数组,在声明创建一个变量后马上对其初始化是个良好的习惯,能有效减少各种意想不到的错误。
可以在创建数组的同时使用初始化表达式为其中元素初始化,初始化表达式按元素的顺序依次写在一对花括号中,元素中间用逗号隔开,见示例。
不合法的数组操作
数组对应着一片内存区域,从较高层次上看,数组可以看成是一个特殊的大“变量”,已经学过,同类型的变量之间可以相互赋值,可以比较大小,可以作运算,那数组可否进行这些操作呢,答案是否,即使是同类型、同样大小的数组,下列操作也是非法的:
(1)用一个已经初始化的数组对另一个数组赋值,即使是元素类型相同,数组大小相同,这样的用法也是不允许的。
int x[3]={7,8,9};
int y[3];
y=x; /*错误*/
(2)对数组进行整体输入输出。
printf和scanf不支持对普通数组进行整体输入输出,必须以元素为单位进行操作,但对字符数组来说,

最近更新

2025年云南机电职业技术学院单招职业倾向性测.. 39页

2025年云南特殊教育职业学院单招职业适应性考.. 41页

2025年云南省思茅市单招职业适应性测试模拟测.. 40页

2025年云南省西双版纳傣族自治州单招职业适应.. 40页

2025年云南能源职业技术学院单招综合素质考试.. 41页

2025年云南财经职业学院单招职业适应性测试模.. 41页

2025年云南锡业职业技术学院单招职业倾向性考.. 40页

2025年伊犁职业技术学院单招职业倾向性测试题.. 40页

2025年保定理工学院单招职业技能考试模拟测试.. 39页

2025年信阳学院单招综合素质考试题库附答案 40页

2025年六安职业技术学院单招综合素质考试题库.. 41页

2025年兰州石化职业技术大学单招职业倾向性考.. 40页

2025年兰州科技职业学院单招职业倾向性测试题.. 39页

房地产市场调查相关资料 43页

2025年兰州资源环境职业技术大学单招职业适应.. 40页

2025年共青科技职业学院单招职业技能考试模拟.. 39页

2025年冀中职业学院单招综合素质考试题库推荐.. 41页

2025年内江卫生与健康职业学院单招职业适应性.. 39页

2025年内蒙古丰州职业学院单招职业适应性测试.. 40页

2025年内蒙古体育职业学院单招职业适应性考试.. 41页

2025年内蒙古呼和浩特市单招职业倾向性考试模.. 39页

2025年内蒙古巴彦淖尔盟单招职业适应性考试模.. 40页

2025年内蒙古机电职业技术学院单招职业适应性.. 42页

2025年内蒙古电子信息职业技术学院单招职业倾.. 40页

2025年国家开放大学《建筑力学》章节测试参考.. 13页

2024年常州机电职业技术学院单招职业适应性测.. 78页

食品安全自查、从业人员健康管理、进货查验记.. 9页

康复医院设置标准1 14页

民间非盈利组织会计制度 7页

介绍医院门诊ppt 28页