所谓多维数组就是以多个数组为单位组成的数组,即元素本身是数组的数组。下面我们来学习多维数组的基本知识:
多维数组
上一节学习的数组都是int型或double型等单一类型,实际上数组本身也可以作为组成数组的元素。
以数组作为元素的数组时二维数组,以二维数组作为元素的数组是三维数组……也可以组成更高维度的数组。二维以上的数组统称为多维数组。
多维数组是以数组为元素的数组。
让我们来看下由单一的数据类型组成一维数组,再由一维数组组成二维数组的过程
a——>b:int类型的元素集中起来形成一维数组。
b——>c:一维数组集中起来形成二维数组。
元素类型分别如下:
a:int型
b:int[3]型 元素类型为int型,元素个数为3.
c:int[3][3]型 以元素类型为int型,元素个数为3的数组为元素,元素个数为3的数组。
二维数组就是一个像由行和列组成的表单,各个元素纵横排列。
在多维数组的声明中,最先集中起来的元素个数(比如二维数组的列)放在末尾。
我们将构成数组的最小元素称为构成元素,访问构成元素的表达式形式为a[i][j],即连用下标运算符[ ],下标也是从0开始的,和一维数组一模一样。
构成二维数组a[3][3]的构成元素有:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、a[2][0]、a[2][1]、a[2][2]一共9个。
和一维数组一样,多维数组的所有元素/所有构成元素在内存的排列是一条直线上的。构成元素排列时,首先是末尾的下表按照0、1、……的顺序递增,然后是开头的下标按照0、1……等顺序递增,如下所示:
a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、a[2][0]、a[2][1]、a[2][2]
注意
多维数组的构成元素进行排列时,首先由末尾的下标(列)开始递增。
另在再定义一个二维数组时,它的行可以省略,但是列不行的哦!
下面我们用二维数组来编写一段程序假设有4名学生,3门课程,并且进行两次考试,让我们分别求出各课程的总分并显示。
#include<stdio.h>
int main()
{
int i, j;
int tensu1[4][3] = {{2, 3, 4}, {4, 3, 4 }, {5, 3, 3}, {3, 4, 4}};
int tensu2[4][3] = {{2, 3, 4}, {4, 3, 4 }, {5, 3, 3}, {3, 4, 4}};
int sum[4][3];
/*求两次考试的分数之和*/
for(i = 0; i < 4; i++)//4名学生
{
for(j = 0; j < 3; j++)//3门课程
{
sum[i][j] = tensu1[i][j] + tensu2[i][j];
}
}
puts("第一次考试的分数:");
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
printf("%4d", tensu1[i][j]);
}
putchar('\n');
}
puts("第二次考试分数的:");
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
printf("%4d", tensu2[i][j]);
}
putchar('\n');
}
puts("显示总分:");
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
printf("%4d", sum[i][j]);
}
putchar('\n');
}
return 0;
}
二维数组到这里基础的知识我们已经讲完了,那么在你脑海中三维数组是啥样的呢?
三维数组
二维数组可以看为一页页纸张,三维数组可看为由一页页纸张组成的书本。
二维数组当然可以看作平直角坐标系(x和y),三维数组可以看做空间直角坐标系(x、y、z)。
选择一个角,作为原地,作出空间直角坐标系,相信这个类型的图在我们高中化学大题(题型记不清了)也出现过。
在下节课中我们将会学习函数,函数作为C语言是我们必须学习的,同时它也会将我们带入一个全新的领域!
由于期末考试来临再加上函数部分学习可能不会那么轻松,更新速度回有所减慢,请见谅哦。