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

本文深入解析数组元素基址、维界地址及映像函数常量基址的概念,通过实例讲解如何计算多维数组中特定元素的地址,揭示数组在内存中的存储原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*base:

数组元素基址,以二维数组A为例,将数组(按行或者按列)拉成一个向量L所组成的线性结构的首地址.

*bounds:

数组维界地址,指向一个一维数组B,它存放了数组A各维度元素的数目.假设数组A是(3,4,5)大小的, 则数组B=[3,4,5]

*constants:

数组映像函数常量基址,指向一个数组C, 它存放了"数组A各个维度上的数字加一时, 元素在线性结构L上所移动的距离".举个栗子吧!

首先二维数组A(3,4):

bounds[] = [3,4];

constants[] = [4,1]:代表第0维上的数字每加一, 元素在线性结构L中的位置就增加了4; 而第一维上的数字每加一, 元素位置也是加一

若要求坐标为(2,2)的元素地址addr.(处在第三行,第三列的位置),则

addr = 数组A首元素地址 + 2constants[0] + 2constants[1]

= 数组A首元素地址 + 2*4+2 = 数组A首元素地址 + 10

再看一个三维数组A(3,4,5):

bounds[] = {3,4,5}

constants[] = {4*5, 5, 1}

可以看出:constants[2] = 1; constants[1] = constants[2]*bounds[2]; constants[0] = constants[1]*bounds[1]

即:constants[i] = constans[i+1] * bounds[i+1]

对于一个元素, 其第0维每增加一, 在线性结构L中的位置就增加了4*5 = 20个, 以此类推.

则元素(1,2,3)的元素位置为:

1constants[0] + 2constants[1] + 3constants[2] = 120 + 25 +31 = 33

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值