📜  C多维数组(1)

📅  最后修改于: 2023-12-03 14:40:25.670000             🧑  作者: Mango

C多维数组

C语言中的多维数组是指包含多个维度(维数)的数组。简单来说,它是由一些数组组成的“超级数组”,每个数组又是由其他数组组成的。例如一个二维数组,实际上就是由一些一维数组构成的。

定义多维数组

C语言中定义多维数组的语法为:

type arrayName[size1][size2]...[sizeN];

其中,type 是数组中元素的类型,arrayName 是数组的名称,size1、size2 … sizeN 是数组每个维度的大小。例如下面的代码定义了一个 2x3 的整型二维数组:

int myArray[2][3];

要注意:

  • 数组的大小必须是正整数。
  • 多维数组中每个维度的大小可以不同,但是每个维度的类型必须相同。
  • 多维数组中的每个元素都可以使用下标来访问,下标从 0 开始。例如 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语言中常用的数据类型之一。它可以表示更为复杂的数据结构,例如矩阵、图等等。对于多维数组,我们需要掌握定义和初始化的语法、内存分布以及使用循环来进行遍历和操作等知识点。