- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第11章同一类型多个元素的集合——简单数组在实际的程序设计和代码编写中,经常会用到大批同类型的数据,比如某个班学生的成绩等,为方便解决这类问题,C语言提供了数组这一数据结构,这里的数据结构,可理解为数据的存放和管理方式。和普通变量一样,在使用数组前必须先对其声明以开辟所需要的内存空间,由于数组是很多数据的集合,这些数据对应的内存单元是如何排列的,这都是本章要解决的内容。11.1什么是数组程序经常使用同类型的数据,比如要处理某个班级的学生成绩信息,如果只有几个学生,我们可以使用几个同类型变量,比如:intmark0,mark1,mark2,mark3,mark4;这样,便可以存放5个学生的成绩,但如果是几百人呢?要一直这么写下去么,如果读者觉得继续写下去没什么不妥的话,那几千甚至几万人呢,所以,如何合理组织大量同类数据是个问题。合理组织的含义包括:(1)为每个数据分配存储空间。(2)每个数据应当有唯一的标识符进行读写和查找。在这种应用背景下,数组应用而生,成功地解决了上述问题。11.1.1数组是一大片连续内存空间N*sizeof(short)=N*2p+(M-1)*sizeof(short)声明一个数组时,编译器为数组分配内存存储空间,值得注意的是:数组占据的内存空间是连续的,这样,很容易计算数组占据的内存大小和每个元素对应的内存首地址,举例来说,对一个大小为N,类型为short的数组,其占据的内存大小为:如果说第1个元素在内存中的地址为p,那么第M个元素(M不大于N)在内存中的地址可表示为:这充分体现了数组的有序性。下面来看要解决的第2个问题“每个数据应当有唯一的标识符进行读写和查找”,这是通过下标来实现的,以一维数组为例,元素的访问形式为:1数组名[下标]2举例来说,有一个数组,名为mark,里面记录着全班60个人的成绩,mark中的第1个元素可写为mark[0],第2个元素为mark[1],第3个元素为mark[2],由此类推,第60个元素为mark[59],好了,结束。这点很重要,记住,mark[60]是没有意义的,对一个大小为N的数组来说,有效的下标为0到N-1,不在此范围的下标访问都会引发越界错误。3了解了数组的基本组织形式,下面的章节具体看下如何使用数组解决实际问题。411.1.2数组元素的访问11.2一维数组一维数组也称向量,用以组织具有一维顺序关系的一组同类型数据,在使用数组前,必须先声明数组,编译器根据声明语句为其分配内存,这样数组才有意义。要在内存中开辟一块连续内存给数组用,需要考虑以下问题,一是在哪里开辟,而是开辟多大的地方,C语言中,这都是由编译器自动完成的,编程人员说要做的是“提要求”,即所开辟的数组应能盛放多少个元素,每个元素是什么类型,另外,编程人员还要指定数组名。类型数组名[数组元素个数];doublesz[6];一维数组声明的基本格式为:比如,声明语句:告诉编译器3条信息:数组名是sz,存放的元素是double型,数组存放的元素个数为6,这样,便可以对数组及数组元素进行读写访问。12345611.2.1一维数组的声明11.2.2一维数组元素的访问通过实例来看一下一维数组元素的访问方式,见。上节中也已经提过,要防止下标越界的错误发生,对上面声明的数组sz来说,有效的下标是0到5,在程序中如果出现了sz[6],编译器有时并不会报错,但这可能引起程序的崩溃。11.2.3数组的初始化存在潜在的安全隐患:没有对数组元素初始化,因为立即采用键盘输入为数组元素赋了值,貌似问题不大,但如果需要对代码修改,不小心在赋值前便使用了数组元素,这时,因为初始化时内存单元内容的不确定,程序输出的结果往往是不可预料的。不仅仅是数组,在声明创建一个变量后马上对其初始化是个良好的习惯,能有效减少各种意想不到的错误。可以在创建数组的同时使用初始化表达式为其中元素初始化,初始化表达式按元素的顺序依次写在一对花括号中,元素中间用逗号隔开,见示例。11.2.4不合法的数组操作数组对应着一片内存区域,从较高层次上看,数组可以看成是一个特殊的大“变量”,已经学过,同类型的变量之间可以相互赋值,可以比较大小,可以作运算,那数组可否进行这些操作呢,答案是否,即使是同类型、同样大小的数组,下列操作也是非法的:(1)用一个已经初始化的数组对另一个数组赋值,即使是元素类型相同,数组大小相同,这样的用法也是不允许的。intx[3]={7,8,9};inty[3];y=x; /*错误*/(2)对数组进行整体输入输出。printf和scanf不支持对普通数组进行整体输入输出,必须以元素
您可能关注的文档
最近下载
- 自主设置目录内二级学科备案表(样表)(模板).doc VIP
- 陕西省泾河东庄水利枢纽工程水土保持方案(弃渣场补充).docx VIP
- DB32T-传染病突发公共卫生事件应急处置技术规范 第1部分:监测预警.pdf
- 高压比离心压气机高性关键技术研究.pdf
- 自主设置目录外二级学科专家评议意见表(样表)(模板).doc VIP
- 气动四自由度机械手结构设计正文.doc
- 电动自行车充电桩可行性研究报告.docx VIP
- 土石方工程施工组织设计.pdf VIP
- 集团有限公司科技创新奖励制度(最新)全套 .pdf VIP
- (高清版)DB3304∕T 100-2023 流动人员人事档案数字化规范.pdf VIP
文档评论(0)