1、数组是相同类型数据的集合。它们都拥有同一个名称。在大数量处理处理和字符串操作时,广泛使用数组。数组对C语言来说起着相当至关重要的作用。本章将重点讲数组的各种操作。在程序设计的过程中,经常会处理一些数据类型相同的变量,为了方便,C语言中提供了数组这一结构。数组分类按照数据类型不同分类整型数组、字符型数组、指针数组等按照数据多少一维数组、二维数组、多维数组前面章节中讲解的C语言的基本数据类型只能处理一些简单的数据类型,如果遇到复杂的具有相同类型的多个数据那么就很难解决。幸好,C语言提供了数组来解决了这一个问题。一维数组是长度固定的数组,其存储空间是一片连续的区域。本节将讲解一维数组的概念及其应用。
2、声明数组是告诉编译器,数组名所使用的标识符。数组的定义是令系统为该数组分配内存空间。在C语言中,数组的声明和定义是同时进行的。数组的初始化是用来实现对数组的每个元素赋初值的。虽然有的编译器会自动对数组赋初值,但为了安全起见,建议用户自己对数组赋初值。注意点示例代码若对数组中的所有元素都赋予了初始值,可以不用指定数组的大小,系统将自动根据赋值的个数来确定数组的大小intx=1,2,3,4,5;若只对数组中的部分元素赋予初始值,则系统会自动为其他元素赋初始值0intx10=1,2,3,4,5;若只声明数组,而不为数组赋值,则数组中的元素值是不确定的intx10;C语言数组的大小只能是常量,而不能使
3、用变量下面的代码是不合法的:inti=100;intai;在C语言中,一维数组的引用其实就是对一维数组元素的使用。一维数组的引用形式以及相关举例如图5.8所示。二维数组指有两个下标的数组。C语言中,对于常用的数组除了有一维数组还有二维数组。本节来学习二维数组。二维数组有两个下标。二维数组中的元素和一维数组中的元素一样,具有同样的数据类型。对于二维数组的初始化有好多种方法,如表5-3所示。二维数组初始化方法示例代码分行给二维数组赋初值inta23=0,1,2,4,5,6可以将所有数据写在一个花括号内,按照数组排列的顺序对各元素赋初值inta23=0,1,2,4,5,6可以对部分元素赋初值,而在每
4、行的其他元素的值为0或者为0inta23=1,4等价于inta23=1,0,0,4,0,0如果对数组的全部元素赋初值,则定义二维数组时可以不指明下标1,但是必须明确指明下标2的长度inta23=0,1,2,4,5,6等价于inta3=0,1,2,4,5,6二维数组的引用形式如图5.13所示。字符数组就是用来存放字符的。在计算机中经常会处理字符,C语言对字符的处理主要是通过字符数组实现的。在本节中将会讲述字符数组的概念及其应用。字符数组的含义如图5.17所示。概念在C语言中,由若干字符组成的序列称为字符串结束标志字符串一般以0作为结束标志存储形式字符串不能用一个变量存放,必须用字符数组来存放一维
5、字符数组的初始化方式一般有两种,如表5-4所示。初始化方式示例代码说明逐个为字符数组赋值charc6=H,e,l,l,o;每个字符会依次赋值给数组中的每个元素用字符串直接给字符数组赋值charc6=Hello;直接将字符串赋给字符数组来初始化。系统会依次读取字符串中的每个字符,赋值给数组每个元素,并在字符串的的结尾处加一个字符即结束符0作为一个数组元素。charc6=Hello;等价于charc6=Hello;等价于charc=Hello;前面已经讲解过了一维数组与二维数组的引用,所以字符数组的引用大家应该已经有一个概念了。C语言中,可以引用字符数组中的一个元素,得到一个字符。这一小节通过两个
6、简单的示例讲解一维字符数组和二维字符数组的引用。字符数组的输入输出有两种方法,如图5.23所示。注意点注意事项说明1输出字符不包括结束字符0如图5.2的输出结果可以看出2用“%s”格式输出时,printf()函数的输出项是字符数组名,而不是字符元素printf(“%s”,c);/其中数组名为c3如果数组长度大于字符串的实际长度,也只是输出遇到结束字符结束输出charc10=“China”/字符串的长度为5printf(“%s”,c);/也只输出字符串“China”,而不是输出10个字符4如果一个字符数组由多个0,则遇到第一个0就结束输出因为字符0是字符串的结束标志5可以用scanf函数输入一个字符串scanf(“%s”,c);通过输出杨辉三角图来进一步讲解数组的应用。杨辉三角的图形界面如图5.25所示。其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。具体对于杨辉三角程序分析思路如图5.26所示。