在數(shù)據(jù)結構 C語言版中, 對數(shù)組有這樣的定義:
typedef struct { ElemType *base; //數(shù)組元素基址 int dim; //數(shù)組維數(shù) int *bounds; //數(shù)組維界基址 int *constants; //數(shù)組映像函數(shù)常量基址 }Array;
這些屬性分別代表什么呢?
- dim - 首先C語言的數(shù)組是基于行序為主序的數(shù)據(jù)結構, 比如一個矩陣可以看做是一個二維數(shù)組, 一列就是一個數(shù)據(jù)元素, 顯性的看就是 dim 維數(shù)組中的每一個數(shù)據(jù)元素也是一個 dim-1 維數(shù)組.
- base - 數(shù)組使用一組連續(xù)的地址空間儲存數(shù)據(jù), base 就是這組空間的基址.
- bounds - 指向一個存放每一維長度的數(shù)組的一個起始地址. 數(shù)組中有一個存放數(shù)組維界的數(shù)組, 里面存放著每一維的長度, bounds 就是這個數(shù)組的基址.
- constants - 指向一個存放每一維起始地址的數(shù)組的起始地址. 為了更方便的計算每一維數(shù)據(jù)元素的地址, 數(shù)組中每一維前面都有一個固定值,(可以類似理解成10進制中十位進一位代表10, 百位進一位代表100. 十位和百位就代表不同的維度, 10和100就是存儲在緯度前面的那個固定值.) 把這些固定值儲存到一個映像函數(shù)數(shù)組中, constants 就是這個數(shù)組的基址.