以下内容仅代表我个人的理解,不当之处请各位多多指教。
多维数组一般被抽象理解为矩阵,数组的本意是定义一系列相同的元素,按照这个理解那么就可以有如下用法:
假如我要写一个反汇编器,用 a 来表示一个寄存器,那么就可以表示为:
代码:
int a;
代码:
int a[32];
代码:
int a[2][32]; // 表示有两组这样的寄存器
代码:
int a[4][2][32]; // 表示一块 CPU 中的所有寄存器
a[4][2][32]; // 把后面的 [2][32] 看为一个元素,前面的[4]表示有4个这样的元素。
用多维数组一下子是反应不过来的。可以用 typedef 辅助,上面的过程可以转变为:
代码:
typedef int Register; // 定义一个寄存器 Register a[32]; // 32 个寄存器 typedef int RegisterGroup[32]; // 定义一个寄存器组 RegisterGroup a[2]; // 有两组这样的寄存器 typedef int Core[2][32]; // 定义一个核心 Core a[4]; // 有四个核心
b = a[0][1][2]; // 表示把第一个核心的第二组寄存器中第三个寄存器的值赋给 b
以上是我对多维数组的一种理解。不当之处请大家多多指教。
在不同的语义下多维数组有不同的含义,切勿生搬硬套。
很多教材里对于数组的解释只说到了二维数组,多维数组就只是含糊其词略过了。