数组
- 一、什么是数组?
- 二、一维数组
- (一)一维数组声明
- (二)一维数组初始化
- (三)一维数组的引用
- 三、多维数组(以二维数组为例)
- (一)二维数组声明
- (二)二维数初始化
- (三)二维数组的引用
一、什么是数组?
C语言支持数组数据结构,是用来存储固定大小的相同类型元素的顺序集合,往往被认为是一系列相同类型的变量。
特点:
- 有序数据的集合。
- 数组内所有元素类型相同。
- 所有的数组都是由连续的内存位置组成,最低的地址对应第一个元素,最高的地址对应最后一个元素。
- 数组中的特定元素可以通过索引访问,第一个索引值为 0。
二、一维数组
(一)一维数组声明
在 C 中要声明一个数组,需要指定元素的类型和元素的数量,一维数组定义:
类型说明符 数组名[常量表达式];
注意:
- 数组名必须是合法的标识符
- [ ]中的内容可以是常量和符号常量,不可以是变量
例如:
int a[10];
a为整型数组名,含有10个元素:a0, a1, a2 … a9 。
(二)一维数组初始化
在 C 语言中,可以逐个初始化数组,也可以使用一个初始化语句,对数组元素的初始化可以用以下方式实现:
(1)在定义数组时对数组元素赋初值。
例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
此实数组元素的值为:
a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9
注意:大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。
(2)只给一部分元素赋初值。
例如:
int a[10]={0,1,2,3};
数组a定义了10个元素,但是{}内只提供了4个初值,表示只给前4个元素赋值,后6个元素值为0。
(3)在对全部数组元素赋初值时,可以不指定数组长度,此时数组的长度就是初值的个数。
例如:
int a[]={0,1,2,3,4};
此时定义了数组长度为5的数组a,并全部元素赋初值。
(三)一维数组的引用
数组元素可以通过数组名称加索引进行访问,元素的索引是放在方括号内,跟在数组名称的后边。只能逐个引用数组元素,而不能一次引用整个数组,例如:
int b = a[index];
index为数组下标,可以是整型常量或者整型表达式,数组下标范围:0~(n-1),n为数组长度,使用数组时注意防止下标越界。
三、多维数组(以二维数组为例)
C 语言支持多维数组。多维数组声明的一般形式如下:
type arrayName[size1][size2]...[sizeN];
下面以二维数组为例进行介绍。
(一)二维数组声明
多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:
type arrayName [x][y];
其中,type 可以是任意有效的 C 数据类型,arrayName 是一个有效的 C 标识符。一个二维数组可以被认为是一个带有 x 行和 y 列的表格。下面是一个二维数组,包含 3 行和 4 列:
int a[3][4];
因此,数组中的每个元素是使用形式为 a[ i , j ] 的元素名称来标识的,其中 a 是数组名称,i 和 j 是唯一标识 a 中每个元素的下标。
(二)二维数初始化
二维数组初始化可以使用如下方法:
(1)分行为二维数组赋初值。例如:
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2)可以将所有的数组给到一个{ }内,按数组排列的顺序对各元素赋值。例如:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值。例如:
int a[3][4] = {{1},{5},{9}};
此时对二维数组各行的第一列元素赋初值,其余元素为0,赋值后的数组元素为:
1 0 0 0
5 0 0 0
9 0 0 0
也可以对各行的某一元素赋初值,例如:
int a[3][4] = {{1},{0,5},{9,0,2}};
赋值后的数组元素为:
1 0 0 0
0 5 0 0
9 0 2 0
(4)如果对全部元素赋初值,则定义数组时可以不指定第一维的长度,但是不能省略第二维的长度。例如:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
等价于:
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
系统会根据数据的总数分配存储空间,一共12个数据,每行4列,可以确定3行。
(5)可以只对部分元素赋初值而省略第一维的长度,但是要分行赋初值。例如:
int a[][4] = {{1,0,2},{5,0,0},{}};
此时,数组元素为:
1 0 2 0
5 0 0 0
0 0 0 0
(三)二维数组的引用
二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如:
int b = a[2][3];
(1)二维数组元素的表现形式为:数组名 [下标][下标]
(2)二维数组的元素可以出现在表达式中,也可以被赋值。
(3)使用二维数组元素时,注意下标值是否在定义的数组大小范围内,防止下标越界。