多维数组与二维数组本质相同,只是维度更多而已。在日常程序设计过程中,高于二维的多维数组使用得不多,故以在线方式提供给读者。

版权声明

本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。

本文不可以以纸质出版为目的进行改编、摘抄。

请见下述示例程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Project - ThreeDim
#include <cstdio>

int main(){
short a[2][2][3] = {
{
{0,1,2},
{10,11,12}
},
{
{100,101,102},
{110,111,112}
}
};

printf("a = %p, sizeof(a) = %lld\n",a,sizeof(a));
printf("a[1][1][1] = %d",a[1][1][1]);
return 0;
}

上述代码的执行结果为:

1
2
a = 000000e0d17ffa50, sizeof(a) = 24
a[1][1][1] = 111

🚩第5 ~ 14行:定义了一个2×2×3的三维数组,该数组包含两个2行3列的二维数组。上述代码中可见,a数组的初始化列表用了三层{ }包裹。同样地,该数组被定义时,程序员可以省略0维的元素个数(本例中为2),让编译器从初始化列表中统计,但1维和2维的元素个数(本例中为2和3)不可以省略。

a数组是三维数组的数组名,其维度信息可以表示为(2,3,3);a[0]、a[1]则可视为二维数组的数组名,其维度为(2,3);a[1][1]则可视为一维数组的数组名,它包含3个元素。

🚩第16行:将数组名a以地址/指针格式输出。数组名a为a数组中首元素,即a[0][0][0]的地址。数组a中有2 x 2 x 3 = 12个元素,每个short占2两个字节,故sizeof(a)的返回值为24。

🚩第17行:输出了元素a[1][1][1]的值。该元素的内存地址计算公式与上节所述的二维数组类似。