数组维界基址和数组映像函数常量基址

在数据结构 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 就是这个数组的基址.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,469评论 8 114
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,890评论 0 27
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,804评论 25 709
  • 寒夜如洗,十五刚过,月儿依旧圆满,皎洁明亮,月中隐隐约约有着桂树的轮廓,或者本就不是桂树,只是因了嫦娥的故事,而越...
    初憬阅读 604评论 0 1
  • 梓阳的脾气还很大,今天下午看着梓阳做馒头,把他放在车子里,给他放了几个玩具里面玩儿,刚开始玩挺好的,玩了十...
    李梓旭妈妈阅读 97评论 0 1