一、二维数组的定义
1.二维数组定义的一般形式为:
类型说明符 数组名 [常量表达式] [常量表达式];
如:int a[3][4];就是定了a为三行四列的数组。
2.我们也可以对二维数组采用这样的定义方式,使得二维数组可以被看作是一种特殊的一维数组
如:把a看作为一个一维数组,他有三个元素,每个元素又是一个包含4个元素的一维数组。
二、二维数组的引用
二维数组的表示形式为:
数组名[下标][下标],如:a[2][3]。
二维数组和一维数组一样,它的下标最大值是常量表达式的最大值 - 1;因为行号和列好是从0起算的
三、二维数组的初始化
1.(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赋值
(4)如果对全部元素赋初值,则定义数组时,对第一维的长度可以不指定,但第二维的长度不能省略。即可以省略行号,不可以省略列好。如:
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
(5)整型二维数组,一个元素的大小为4个字节,那么有几个元素就是n * 4的字节大小。
要注意的是,如果int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
那么13作为第13个元素多出来的一行,这一行即使只有一个元素,总的字节大小也要加上4 * 4,后面没有被赋值的三个元素默认会为0;
(6)我们在遍历输出一个二维数组的各个元素时,可以采用:
int rows = sizeof(a) / sizeof(a[0]) 来定义行号的个数
int cols = sizeof(a[0]) / sizeof(a[0][0]) 来定义列号的个数。
四、例题
1.求出整型数组a[N][N]主对角线最大值和辅对角线最小值。
需要注意的是主对角线都是a[i][i]类型的,辅对角线都是a[i][rows - i -1]类型的
2.字符型二维数组,整体倒序
跟一维数组一样,只需要赋值替换成strcpy(),比大小换成strcmp()即可。
3.二维数组,插入法排序