📅  最后修改于: 2023-12-03 14:40:25.670000             🧑  作者: Mango
C语言中的多维数组是指包含多个维度(维数)的数组。简单来说,它是由一些数组组成的“超级数组”,每个数组又是由其他数组组成的。例如一个二维数组,实际上就是由一些一维数组构成的。
C语言中定义多维数组的语法为:
type arrayName[size1][size2]...[sizeN];
其中,type 是数组中元素的类型,arrayName 是数组的名称,size1、size2 … sizeN 是数组每个维度的大小。例如下面的代码定义了一个 2x3 的整型二维数组:
int myArray[2][3];
要注意:
myArray[1][2]
表示数组中第 2 行第 3 列的元素。对于多维数组,我们可以使用递归的方式来进行初始化,例如下面的代码初始化了一个 2x3 的整型数组:
int myArray[2][3] = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
初始化时可以省略某些维度的大小(由编译器自动推断),例如下面的代码初始化了一个 2x3x4 的三维数组:
int myArray[][3][4] = {
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
},
{
{ 13, 14, 15, 16 },
{ 17, 18, 19, 20 },
{ 21, 22, 23, 24 }
}
};
多维数组在内存中是顺序存储的,也就是说,所有元素的存储空间是连续的。其存储顺序是按照最右边的维度优先,然后是它左边的维度,以此类推。
例如,一个二维数组 a[2][3]
的元素存储顺序如下图所示:
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
|------ 1st row ------| |------ 2nd row ------|
在这个数组中,每个元素占用 4 个字节(整型变量的大小),那么 a[1][1]
的地址就是 a
所在的内存地址加上 (1*3 + 1)*4
,也就是 a
的地址加上 16
。
对于多维数组,我们可以使用循环来进行遍历和操作。例如,下面的代码输出了一个 3x4 的二维数组:
int myArray[3][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", myArray[i][j]);
}
printf("\n");
}
输出结果为:
1 2 3 4
5 6 7 8
9 10 11 12
我们还可以使用多维数组来表示更为复杂的数据结构,例如矩阵、图等等。
多维数组是C语言中常用的数据类型之一。它可以表示更为复杂的数据结构,例如矩阵、图等等。对于多维数组,我们需要掌握定义和初始化的语法、内存分布以及使用循环来进行遍历和操作等知识点。