二维数组
我们先来看二维数组,所谓二维数组,就是一维数组里面的各个元素分别是一个一维数组。二维数组可以用来表示表或者矩阵。
声明二维数组
语法如下:
//声明二维数组 elementType arrayName[ROW_SIZE][COLUMN_SIZE]; //elementType是返回值类型 //arrayName是二维数组名字 //ROW_SIZE和COLUMN_SIZE分别表示行和列的大小
一个二维数组可以分为两部分看。
第一部分:elementType arrayName[ROW_SIZE]
这一部分看以先看成一个一维数组,它的大小为ROW_SIZE,也就是说,里面将要放ROW_SIZE个数组。
第二部分:[COLUMN_SIZE]
这一部分说明了,在一维数组elementType arrayName[ROW_SIZE]中的小数组的大小
假如我声明了一个二维数组int array[2][3],在内存中的表示应该是:[[0, 0, 0], [0, 0, 0]],即
0 | 0 | 0 | 0 | 0 | 0 |
用人易理解的表格或者矩阵表示应该为:
0 | 0 | 0 |
0 | 0 | 0 |
为二维数组赋值
二维数组的赋值语法同一维数组一样,确认要赋值元素的位置,然后赋值即可。
arrayName[a][b] = value; //0 <= a <= ROW_SIZE-1 //0 <= b <= COLUMN_SIZE-1
初始化的二维数组:
int m[4][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} };
在初始化二维数组时,行号可以省略,但是列号一定不可以省略。
同样要注意的是,数组的第一个下标是0。所以赋值语句array[1][2] = 1;执行后,上述表格会变为:
0 | 0 | 0 |
0 | 0 | 1 |
操作二维数组
二维数组的操作也同一维数组类似。不过一维数组一般使用一层循环语句
for (int i = 0; i < SIZE; i++) { //body }
而二维数组一般使用两层嵌套循环语句
for (int i = 0; i < ROW_SIZE; i++) { for (int j = 0; j < COLUMN_SIZE; j ++) { //body } }
如下面的打印数组元素:
#include <iostream> using namespace std; const int COLUMN_SIZE = 5; int main() {
//行号可以省略,但是列号一定不能省略 int list[][COLUMN_SIZE] = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10}}; for (int i = 0; i < 2; i++) { for (int j = 0; j < COLUMN_SIZE; j ++) { cout << list[i][j] << endl; } } return 0; }
运行结果:
二维数组作为函数参数
同一维数组,但是必须要指明列的大小。
多维数组
多维数组就是多层的数组。比如三维数组就是一个一维数组,里面的元素是二维数组。更高维的数组也是同理。
多维数组与二维数组很类似,这里就不过多赘述。
注:不论几维数组,在内存中均是线性排列的。