数组维界基址和数组映像函数常量基址
2017-06-15 本文已影响292人
KenZhangCn
在数据结构 C语言版中, 对数组有这样的定义:
typedef struct { ElemType *base; //数组元素基址 int dim; //数组维数 int *bounds; //数组维界基址 int *constants; //数组映像函数常量基址 }Array;
这些属性分别代表什么呢?
- dim - 首先C语言的数组是基于行序为主序的数据结构, 比如一个矩阵可以看做是一个二维数组, 一列就是一个数据元素, 显性的看就是 dim 维数组中的每一个数据元素也是一个 dim-1 维数组.
- base - 数组使用一组连续的地址空间储存数据, base 就是这组空间的基址.
- bounds - 指向一个存放每一维长度的数组的一个起始地址. 数组中有一个存放数组维界的数组, 里面存放着每一维的长度, bounds 就是这个数组的基址.
- constants - 指向一个存放每一维起始地址的数组的起始地址. 为了更方便的计算每一维数据元素的地址, 数组中每一维前面都有一个固定值,(可以类似理解成10进制中十位进一位代表10, 百位进一位代表100. 十位和百位就代表不同的维度, 10和100就是存储在纬度前面的那个固定值.) 把这些固定值储存到一个映像函数数组中, constants 就是这个数组的基址.