- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.1 一维数组??? 5.1.1 向函数传递一维数组?? ??? 5.1.2 字符串使用的一维数组5.2 二维数组??? 5.2.1 二维数组的一般形式??? 5.2.2 字符串数组5.3 多维数组5.4 数组的初始化??? 5.4.1 数组初始化??? 5.4.2 变长数组的初始化5.5 应用程序举例
??? 数组是一个由若干同类型变量组成的集合,引用这些变量时可用同一名字。数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维的,也可以是多维的。5.1 一维数组??? 一维数组的一般说明形式如下:??? type-specifier var_name [size];??? 在C语言中,数组必须显示地说明,以便编译程序为它们分配内存空间。在上式中,类型说明符指明数组的类型,也就是数组中每一个元素个数,一维数组的总字节数可按下式计算:sizeof( 类型) *数组长度= 总字节数[例5-1] 将数字0到9装入一个整型数组。main( ){??? int x[10]; /* 定义包含1 0个整型数的数组,引用为x [ 0 ] ,x [ 1 ] . . . x [ 9 ] * /??? int t ;??? for (t=0; t10;++t) x[t]=t;}??? C语言并不检验数组边界,因此,数组的两端都有可能越界而使其它变量的数组甚至程序代码被破坏。在需要的时候,数组的边界检验便是程序员的职责。例如,当使用gets( )接收字符输入时,必须确认字符数组的长度足以存放最长的字符串。??? 一维数组在本质上是由同类数据构成的表,例如,对下列数组a :??? char a[7]图5 - 1说明了数组a在内存中的情形,假定起始地址为1000。
5.1.1 向函数传递一维数组??? 将一维数组传递给函数时,把数组名作为参数直接调用函数即可,无需任何下标。这样,数组的第一个元素的地址将传递给该函数。C语言并不是将整个数组作为实参来传递,而是用指针来代替它。例如,下面的程序将数组i的第一个元素的地址传递给函数func1( )。main( ){??? int i[10];??? func1(i); /*函数调用,实参是数组名* /??? . . .}??? 函数若要接收一维数组的传递,则可以用下面的二种方法之一来说明形式参数; 1) 有界数组;2) 无界数组。例如,函数func1 ( )要接收数组i可如下说明:??? func1(str)??? char str[10]; /* 有界数组,数组的下标只能小于或等于传递数组的大小。* /??? {???? ??? .???? ??? . .??? }??? 也可说明为:??? func1(str)??? char str[ ]; / * 无界数组* /??? {??????? .??????? . .??? }??? 这二种说明方法的效果是等价的,它们都通知编译程序建立一个字符指针。第一种说明使用的是标准的数组说明;后一种说明使用了改进型的数组说明,它只是说明函数将要接收一个具有一定长度的整型数组。细想就会发现,就函数而言,数组究竟有多长并无关紧要,因为C语言并不进行数组的边界检验。事实上,就编译程序而言,下面的说明也是可行的。func1 (str);int str[32];{??? . . .}因为编译程序只是产生代码使函数func1( )接收一个指针,并非真正产生一个包含3 2个元素的数组。5.1.2 字符串使用的一维数组??? 显然,一维数组的最普通的用法是作为字符串。在C语言中,字符串被定义为一个以空字符终结的字符数组。空字符以‘ \ 0’来标识,它通常是不显示的。因此,在说明字符数组时,必须比它要存放的最长字符串多一个字符。例如,假如要定义一个存放长度为1 0的字符串的数组s,可以写成:??? char s[11];??? 这样就给字符串末尾的空字符保留了空间。??? 尽管C语言并不把字符串定义为一种数据类型,但却允许使用字符串常量。字符串常量是由双引号括起来的字符表。例如,下面两个短语均为字符串常量:??? hello there??? this is a test??? 不必向字符串的末尾加空字符, C编译程序会自动完成这一工作。??? C语言支持多串操作函数,最常用的有:??? 名字功能??? strcpy(s1 s2) 将s2拷贝到s1??? strcat(s1 s2) 将s 2连接到s 1的末尾??? strlen(s1) 返回s1的长度??? strcmp(s1,s2) 若s
您可能关注的文档
- C语言程序设计 函数试题.doc
- C语言程序设计 实验三 选择结构程序设计 答案《西北民大 电气学院》.doc
- C语言程序设计 题库管理系统.doc
- C语言程序设计 习题大全(含答案) C语言-2.doc
- C语言程序设计(B)试卷.doc
- C语言程序设计(第三版)笔记——谭浩强.doc
- C语言程序设计(第三版)-谭浩强_笔记.doc
- c语言程序设计(科学出版社)课后习题解答.doc
- C语言程序设计(龙昭华主编)习题集.doc
- C语言程序设计:期末考试试卷(A卷).doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
最近下载
- 四川省绵阳市江油市2020-2021学年九年级上学期期中物理试题(含答案).docx VIP
- (新版)危害因素辨识与风险防控题库及答案解析 .pdf VIP
- 2022年华南农业大学工作人员招聘考试试题及答案.docx VIP
- 人教版小学五年级下册体育教案全集.pdf VIP
- 国有企业基层组织工作条例(试行)在线测试.doc VIP
- 初中常见化学式的默写.docx VIP
- 《基础生态学》(第二版_牛翠娟、孙儒泳、李庆芬)课后思考题答案.doc VIP
- essbase BIEE__学习笔记.ppt VIP
- 初中物理《内能的利用》真题演练含解析.pdf VIP
- TF02EP全自动口服液灌装机使用规程.pdf VIP
文档评论(0)