- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言数组基础知识讲解
数组基础知识讲解1. 数组简介数组(Array)由一系列同种数据类型的元素组成。编译器可以从数组声明中知道数组中元素的数目,以及这些元素的数据类型。例如:double dbl[20]; /* 包含 20 个 double 类型元素的数组 */int c[12]; /* 包含 12 个int型元素的数组 */char ch[40]; /* 包含 40 个 char 型元素的数组 */方括号 [] 表明它们是数组,[] 里的数字表明数组包含的元素数目。数组中的元素是相邻的,初始化之前,元素的值可能是随机的。下图形象地表现了这种相邻关系。使用数组名和下标(subscript number 或 index)就可以访问特定的元素。下标始于 0,止于 n - 1。例如:c[0] 是数组 c 的第一个元素,而 c[11] 是它的最后一个元素,也就是第 12 个元素。2. 初始化int c[12] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };如上所示,我们使用大括号中一系列逗号分隔的值来初始化数组。我们把这个称之为初始化列表。大括号是必须的!逗号和值之间的空格可有可无。初始化后,数组 c 的第一个元素 c[0] 的值为 0,以此类推。下面的小程序输出数组iarr中所有元素的值。#include stdio.hint main(void){intiarr[4] = { 0, 1, 2, 3 };int i = 2;printf(%d , iarr[0]); /* 输出 0 */printf(%d , iarr[1]); /* 输出 1 */printf(%d , iarr[i]); /* 输出 2 */printf(%d , iarr[1+2]); /* 输出 3 */return 0;}如上所示,访问数组元素时,[] 里的可以是常量,可以是变量,也可以是表达式。[] 里还可以是返回值为整型的函数调用。总之,只要 [] 里的值是整数类型都可以。注意,上面的程序,如果把intiarr[4] = { 0, 1, 2, 3 }; 改成intiarr[4];(即没有初始化),则它里面的元素的值是随机的,也就是本来就存在于那段内存空间的值。如果改成intiarr[4]; 后再把它放在int main(void) 之前,则它里面的元素的值都是 0。具体原因我在后续的教程会说明。如果初始化列表中的值的个数少于数组元素个数,则余下的元素都会被初始化为 0。例如:intiarr[4] = { 0, 1 };iarr[0] 和iarr[1] 分别为 0 和 1;iarr[2] 和iarr[3] 都被初始化为 0。注意,初始化列表中的值的个数可以少于数组元素个数,但是超过数组元素个数却是不对的!初始化数组时,[] 里可以留空。例如:intiarr[] = { 1, 2, 3 };编译器会算出初始化列表中的值的个数,然后构造包含那么多个元素的数组。如上例,编译器会算出列表中一共有 3 个值,然后把iarr构造成包含 3 个元素的数组。例如:#include stdio.hint main(void){intiarr[] = { 1, 2, 3 };printf(%d , iarr[0]); /* 输出 1 */printf(%d , iarr[1]); /* 输出 2 */printf(%d , iarr[2]); /* 输出 3 */return 0;}我们可以用以下表达式算出iarr中元素的个数:sizeofiarr / sizeofiarr[0]其中,sizeofiarr算出数组iarr占用的内存大小,sizeofiarr[0] 算出iarr[0] 占用的内存大小(也就是数组iarr中每个元素占用的内存大小),它们相除就得出iarr的元素个数。sizeof是一个运算符,具体用法我以后会说。3. 指派初始值(Designated Initializers)指派初始值这个特性是 C99 增加的,它允许我们直接初始化数组中特定的元素。C99 以前,如果我们要初始化数组中的某个元素,如第三个元素,必须同时初始化它之前的元素。例如:intiarr[10] = { 0, 0, 300 };而 C99 中,我们可以这样初始化特定的元素:intiarr[10] = { [2] = 300 }; /* 指派初始化iarr[2] 为 300 */其余的元素都会被初始化为 0 。下面我们来看一个小程序。#include stdio.hint main(void){intiarr[5] = { 6, 3, [3] = 1, 5, [1] = 8};printf(%d , iarr[0]);printf(%d , iarr[1]);printf(
您可能关注的文档
- 2017中传设计艺术学考研参考书选择那些更好.doc
- 2017中传设计艺术学考研控制心绪经验.doc
- 2017中传设计艺术学考研参考书目介绍详情.doc
- 2017中传设计艺术学考研参考书目.doc
- 2017中传设计艺术学考研辅导参考书.doc
- 2017中传设计艺术学考研综合参考书.doc
- 2017中传设计艺术学考研选择那些参考书.doc
- 2017中传设计艺术学考研备考参考书.doc
- 2017中国传媒大学设计艺术学考研修订版参考书.doc
- 2017中国传媒大学设计艺术学考研如何放松心态.doc
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)