![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
6.2 二维数组
6.2.1 二维数组的一般形式
前面讲解一维数组是带着一对中括号的,也就是说带一个下标,现在讲讲二维数组。显然,二维数组带两对中括号,也就是说带两个下标。看看二维数组定义的一般形式:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p102_85582.jpg?sign=1739550469-bXD77xMlJ7rf06vPD4ODUe3NX73QSYnl-0-a5ebef0328913f508db072cf425e8582)
例如:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p102_85580.jpg?sign=1739550469-gD0tXpaRqZ13aVRj3uKXcx5sMGqJHKCZ-0-dcb00fec7873f32287a99c63cb6bbe79)
上面这行代码的含义:定义a为3行4列的数组,这种按几行几列的方式来理解二维数组的方式最朴素,也最容易理解。
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-P102_47470.jpg?sign=1739550469-qdmVsrcQcZ1FxosfZ04ALmmhFxfd6wBm-0-e95d6a0229aa0988f6cdedab92459fd9)
图6.4 将二维数组理解成含有多个元素的一维数组
也可以这样理解,把二维数组看成是一种特殊的一维数组,也就是说它的元素又是一个一维数组。例如针对a[3][4]这个二维数组,可以把a看成是一个一维数组,这个一维数组有三个元素,即a[0]、a[1]、a[2],每个元素(都看成是一个一维数组名)又是一个包含4个元素的一维数组,这个感觉可以参考图6.4。
所以,“floata[3][4];”就相当于定义了12个元素(3行4列),第一维下标能引用的范围是0~2,第二维下标能引用的范围是0~3,所以整个二维数组能够引用的元素如下,共12个元素:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p102_85581.jpg?sign=1739550469-Ub4RZ3IYvhyc1Ez0na3mZs6CjOdQQnMq-0-02b1b16a2f41b4b7b02e74edddab0ffc)
讲解一维数组时,感受可以参考图6.1,此时讲解二维数组时,感受可以参考图6.5。
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-P103_47478.jpg?sign=1739550469-Ayf9IJ0k4L2P4TQ03rhzVfL93IfvnSdZ-0-875d04ea682718cf4fae8dd8739acce0)
图6.5 int a[3][4]数组包含的元素示意图,注意第一维下标0~2,第二维下标0~3
在C语言中,二维数组的元素存放顺序是:按行存放。即在内存中先顺序存放第一行元素,再存放第二行元素,以此类推,所以,float a[3][4]这个二维数组在内存中存放数据看起来应该如图6.6所示。
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-P103_47484.jpg?sign=1739550469-dY2eL2anZ3ZtdazauIehSgCw0t9f4Fnw-0-404de7ab596cddbe9f740df1a8cdd4ab)
图6.6 二维数组在内存中按行存放
有了对二维数组的理解,三维数组甚至多维数组就好理解了。例如,定义一个三维数组:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p103_85586.jpg?sign=1739550469-hD5JXG0rlNsi9PWjHxkL2GbBMOaoNTer-0-04d24fac200ce6c421c43999946da996)
多维数组在内存中的排列顺序:第一维下标变化最慢,最右边维度的下标变化最快,例如上面这个三维数组,在内存中的排列顺序应该是这样:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p103_85588.jpg?sign=1739550469-xxOqMX9aaMvaXtwsMF2qPcr5JlhXBZkp-0-1022974586322063eaa9edc7ea63b7c2)
在实际工作中,一维和二维数组常用,三维和多维数组用的都比较少。