8.4 二维数组与多维数组
如果数组的每一个元素是一个一维数组,则这个数组就是一个二维数组。在二维数组中,变量可以理解成行和列的关系。用同样的方法,可以构造出多维数组。
8.4.1 二维数组的理解
二维数组可以理解成一个多行多列的表格,每一个单元格中存储了一个变量。可以同一维数组一样定义二维数组。下面的代码定义了一个4行5列的整型数组。
- 01 int a[4][5];
可用表8.3来表示这个数组的行和列存储关系。
如表8.3所示,可以用数组的下标访问二维数组的每一个元素。范例8-8所示的代码使用for循环对这个二维数组进行赋值与输出。
提示:二维数组可以认为是数组的数组,即一维数组的元素又是一个一维数组。
表8.3 二维数组
|
列 < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
行 |
0 |
1 |
2 |
3 |
4 |
|
0 |
a[0][0] |
a[0][1] |
a[0][2] |
a[0][3] |
a[0][4] |
|
1 |
a[1][0] |
a[1][1] |
a[1][2] |
a[1][3] |
a[1][4] |
|
2 |
a[2][0] |
a[2][1] |
a[2][2] |
a[2][3] |
a[2][4] |
|
3 |
a[3][0] |
a[3][1] |
a[3][2] |
a[3][3] |
a[3][4] |
【范例8-8】使用for语句为二维数组赋值并输出,实例代码如下所示。
实例代码8-8
- 01 #include <stdio.h>
- 02 int main()
- 03 {
- 04 int i=10 , m , n ; /*定义程序中的变量。*/
- 05 int a[4][5]; /*定义一个四行五列的二维数组。*/
- 06 for(m=0;m<4;m++) /*用变量m从0到3进行行循环。*/
- 07 {
- 08 for(n=0;n<5;n++) /*变量n从0到4进行列循环。*/
- 09 {
- 10 a[m][n]=i; /*数组中变量赋值。*/
- 11 i++; /*i自加。*/
- 12 }
- 13 }
- 14 for(m=0;m<4;m++) /*变量m的行循环。*/
- 15 {
- 16 for(n=0;n<5;n++) /*变量n的列循环。*/
- 17 {
- 18 printf("a[%d][%d]=%d ",m,n,a[m][n]); /*输出变量名变量值。*/
- 19 }
- 20 printf("\n"); /*每行输出一个换行。*/
- 21 }
- 22 return 0;
- 23 }
【执行结果】输入下面的命令,编译这个程序。 - gcc 8.8.c
输入下面的命令,运行这个程序。- ./a.out
程序的运行结果如下所示。- a[0][0]=10 a[0][1]=11 a[0][2]=12 a[0][3]=13 a[0][4]=14
- a[1][0]=15 a[1][1]=16 a[1][2]=17 a[1][3]=18 a[1][4]=19
- a[2][0]=20 a[2][1]=21 a[2][2]=22 a[2][3]=23 a[2][4]=24
- a[3][0]=25 a[3][1]=26 a[3][2]=27 a[3][3]=28 a[3][4]=29
【代码解析】代码第05行定义二维数组,代码第06~13行用for循环的嵌套实现为二维数组元素赋值,代码第14~22行用for循环的嵌套打印二维数组的元素值。