数组是把具有相同类型的若干变量按有序的形式组织起来的数据元素的集合。在C语言中,要求数组的各元素类型相同、个数固定。另外,一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型,也可以是构造类型。按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等。
数组名的命名规则与变量名命名规则相同,数组元素是按照数组名后面方括号内的下标不同来区分,方括号可以有一组、两组、多组,从而数组有一维数组、二维数组和多维数组之分。
在C51中,数组同样要求先定义、后使用。
1.一维数组
(1)一维数组的定义 一维数组的定义方式为:
类型说明符 数组名[常量表达式];
其中:
1)类型说明符是任一种基本数据类型或构造数据类型。
2)数组名是用户定义的数组标识符。
3)方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:
(2)一维数组元素的引用C语言规定,数组只能逐个引用其数组元素,而不能一次引用整个数组。数组元素也是一种变量,其标识方法为数组名后跟一个下标,下标表示了元素在数组中的顺序号。
数组元素的一般形式为:
数组名[下标]其中下标只能为整型常量或整型表达式。
例如:a[5]、a[i+j]、a[i++]都是合法的数组元素。
另外还要注意的是,如果一个数组a有5个元素,其下标是从0开始计算,因此5个元素分别为a[0]、a[1]、a[2]、a[3]、a[4],而a[5]是错误的。
(3)一维数组的初始化 给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。
数组初始化赋值是指在数组定义时给数组元素赋予初值,数组初始化是在编译阶段进行的。
初始化赋值的一般形式为:
类型说明符 数组名[常量表达式]={值,值…值};其中在{}中的各数据值即为各元素的初值,各值之间用逗号间隔。
例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
相当于a[0]=0;a[1]=1...a[9]=9;
C语言对数组的初始化赋值还有以下几点规定:
1)可以只给部分元素赋初值。当{}中值的个数少于元素个数时,只给前面部分元素赋值。
例如:int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2)只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋0值,不能写为:
int a[10]=0;只能写为:
int a[10]={0,0,0,0,0,0,0,0,0,0};(www.xing528.com)
3)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。
例如:int a[5]={1,2,3,4,5};可写为:int a[]={1,2,3,4,5};
code unsigned char LEDMAP[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//“0”~“9”,“A”~“F”七段码表
2.二维数组
(1)二维数组的定义 如果数组有两个下标,则称为二维数组。二维数组定义的一般形式是:
类型说明符 数组名[常量表达式1][常量表达式2]
其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。
例如:
int a[3][4];
定义了一个三行四列的整型数组,数组名为a。该数组的下标变量共有3×4个,即:
a[0][0],a[0][1],a[0][2],a[0][3]
a[1][0],a[1][1],a[1][2],a[1][3]
a[2][0],a[2][1],a[2][2],a[2][3]
二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是像一维数组只是一个矢量。但是实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。
(2)二维数组元素的引用 二维数组的元素也称为双下标变量,其表示的形式为:
数组名[下标1][下标2]
其中下标应为整型常量或整型表达式。
例如:
a[3][4]
表示a数组三行四列的元素。
(3)二维数组的初始化 二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。
例如对数组a[3][4],两种赋值方式如下。
1)按行分段赋值可写为:
int a[3][4]={{83,75,65,76},{59,63,87,90},{76,71,27,85}};
2)按行连续赋值可写为:
int a[3][4]={83,75,65,76,59,63,87,90,76,71,27,85};这两种赋初值的结果是完全相同的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。