资源描述:
《C语言程序设计(第二版) 刘克成 张凌晓 ch6》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章数组一维数组二维数组字符数组数组作为函数的参数数组综合应用数组的概念数组:按序排列的同类型变量所组成的集合数组中所包含的变量称为数组元素、数组分量、下标变量数组属于构造数据类型,一个数组可以包含多个数组元素,这些数组元素可以是基本数据类型或者构造类型数组用数组名来标识,数组名代表了数组的内存首地址,是地址常量数组元素用数组名和下标来标识,下标是用于描述数组元素在数组中位置信息的量,从0开始数组的使用必须遵循“先声明,后使用”的原则6.1一维数组一维数组是指只有一个下标的数组一、一维数组的声明基本语法:类型标识符数组名[整型常量表达式];例如:floata[5];说明:(1)数组
2、的数据类型是float型,规定了每个元素只能是float型。(2)数组名称的命名规则和变量的命名规则完全相同;在同一个函数中,数组的名称不能和其他局部变量的名称相同。(3)常量表达式表示数组元素的个数,即数组所包含最大元素个数,在定义时需要指定。常量表达式中可以包括常量和符号常量。(4)C编译程序将为a数组在内存中开辟5个连续的存储单元。(5)最后用分号结尾。注意:在定义数组时,数组大小必须是常量,不能是变量或变量表达式。[]:数组运算符单目运算符左结合不能用()intn=5;inta[n];例:charname[10];声明存放10个字符的数组(字符型)floatscores[50
3、];声明存放50个成绩的数组(浮点型)intnumber[20],age[30];声明分别存放20个学号和存放30个年龄的数组(整型)#defineMAX20doubleprice[MAX],sum[2*MAX];利用符号常量声明一个存放20个价格和40个总值的两个双精度数组例:inti=15;intdata[i];(不能用变量定义数组维数)例:试判断下列数组定义是否合法:intstudent[35];staticcharname[20],id[7*2];autofloatscore[35],f=1.2;#definestudent35floatn_student[student]
4、;intscore_student[student*3];intperson(10);intn=10,a[n];二.一维数组元素的引用数组元素的引用是指使用数组中各元素的过程,语法格式:数组名[下标]说明:(1)下标可以是整型变量或整型表达式。下标的最小值是0,最大值为数组的大小减1。(2)定义folata[5];中的a[5]在实际的引用时不存在,最后一个元素是a[4]。(3)一个数组元素实质上就是一个变量名,代表内存中的一个存储单元。一个数组占有一串连续的存储单元,因此,一个数组不能整体引用。(4)定义数组和引用数组元素一定要使用下标运算符[],不能使用括号。因为数组下标可以是整型
5、变量,一般情况可以利用一重循环结构对数组元素进行操作:inta[10],i;for(i=0;i<10;i++){a[i]=i+1;}三、一维数组的内存映像如果定义一个有n个元素的数组,系统会为该数组申请n个连续的内存单元,用来存放n个数组元素,内存单元的大小取决于数组的类型。例如:floatb[5];一个float类型变量需要4个字节的内存,系统会为数组b申请4*5个字节的连续内存,如图所示。内存地址(十六进制)数组元素4C80b[0]4C814C824C834C84b[1]4C854C864C874C88b[2]4C894C904C914C92b[3]4C934C944C954C9
6、6b[4]4C974C984C99四.一维数组的初始化含义:在定义数组的同时,对数组各元素指定初值,初始化在编译阶段完成,不占用运行时间。格式:类型说明符数组名[常量表达式]={表达式1,表达式2,...,表达式n};赋初值规则:将第一个表达式的值赋给第一个数组元素;第二个表达式的值赋给第二个数组元素;依此类推,表达式的个数不能超过数组元素个数(即,常量表达式的值);如果小于元素的个数,则后面的元素为空(即数值型的补0,字符型的补空字符)。说明:表达式列表要用大括号括起来,表达式列表为数组元素的初值列表。表达式之间用逗号分隔。表达式的个数不能超过数组元素的个数。定义数组时给变量赋初值
7、,可以省略定义数组的大小,系统自动认定数组的大小为初值列表中表达式的个数。例如,intd[]={3,4,5};定义的数组d的大小为3:不能用数组名直接对另一个数组赋值。数组名代表数组在内存的首地址常量,数组名称不能被赋值。如果要复制一个数组,只能将数组中的每个元素逐个复制。例如:intc[5]={1,2,3,4,5};初始化后的结果例如:intsco[10]={0,1,2,3,4,5,6,7,8,9};相当于sco[0]=0;sco[1]=1;…;sco[