1.什么是多维数组
要理解多维数组,不妨先理解其中的二维数组,那什么是二维数组呢?
如图,这是一维数组arr[10]:
数组 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
如图,这是二维数组arr[2][10]:
数组 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
1 | arr[0][0] | arr[0][1] | arr[0][2] | arr[0][3] | arr[0][4] | arr[0][5] | arr[0][6] | arr[0][7] | arr[0][8] | arr[0][9] |
2 | arr[1][0] | arr[1][1] | arr[1][2] | arr[1][3] | arr[1][4] | arr[1][5] | arr[1][6] | arr[1][7] | arr[1][8] | arr[1][9] |
可以说,一维数组就是只有行的数组,二维数组就是既有行又有列的数组。
相关概念可以查看数组的概念与使用-优快云博客。
那么,三维数组是什么呢?
这就要深入理解二维数组的本质了。
2.二维数组的本质
我们都知道,在数组传参时,传输的实际上是数组首元素的地址(指针)。
同理,二维数组在传参时。实际上传输的也是其首元素的地址,那么,二维数组的首元素是什么呢?
——是它的第一行。
因此,不妨将二维数组的每一行都看作一个一维数组,这样二维数组arr[2][10]就可以理解为元素数量为二,每个元素均为一维数组的一维数组。只不过其元素的数据类型是 int(*) [10] 。
int arr[2][10] = { 2,1,2,1,4,5,6,7,8,9, 2,3,4,5,3,5,6,3,3,2 };
arr[2][10] | arr[0] | arr[1] |
元素 | arr1[10] | arr2[10] |
arr1[10] | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
元素 | 2 | 1 | 2 | 1 | 4 | 5 | 6 | 7 | 8 | 9 |
arr2[10] | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
元素 | 2 | 3 | 4 | 5 | 3 | 5 | 6 | 3 | 3 | 2 |
3.多维数组的本质
通过二维数组,我们了解到多维数组就是将数组套娃,一个套一个。
因此,三维数组的元素就是二维数组,四维数组的元素就是三维数组,以此类推。
但是,有小伙伴会想:数组的地址(指针)又是什么呢?
因此,下一篇文章我将讲解数组指针,敬请期待。
完