首页 热点资讯 义务教育 高等教育 出国留学 考研考公

简单数组的地址的计算

发布网友 发布时间:2022-04-26 17:38

我来回答

1个回答

热心网友 时间:2023-10-18 02:15

根据你的表达来看该数组起始下标是从1开始而非0开始的。所以这样分析:
4*5*6个元素的数组可以看成一个由4个元素组成的数组,即a[1]、a[2]、a[3]、a[4],每个数组元素又是一个二维数组,每个数组元素大小是5*6*2=60个存储单元,也就是每个第一层数组元素a[i](i=1、2、3、4)的起始地址为1000+ (i-1)*60。按照这个规律往下推理,a[i][j](i=1、2、3、4,j=1、2、3、4、5)的起始地址为1000+ (i-1)*60+(j-1)*12,最后a[i][j][k]的地址应该为1000+ (i-1)*60+(j-1)*12+(k-1)*2 (i=1、2、3、4,j=1、2、3、4、5,k=1、2、3、4、5、6) ,所以a[2][3][4]按行优先存储的地址是1000+(2-1)*60+(3-1)*12+(4-1)*2
同理分析可得a[i][j][k]按列优先存储的地址是1000+(k-1)*40+(j-1)*8+(i-1)*2 (k=1、2、3、4、5、6,j=1、2、3、4、5,i=1、2、3、4) ,a[2][3][4]按列优先存储的地址是1000+(4-1)*40+(3-1)*8+(2-1)*2

PS:如果数组起始下标是从0开始的,那么a[i][j][k]按列优先存储的地址是1000+k*40+j*8+i*2
,按行优先存储的地址是1000+ i*60+j*12+k*2

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com