简单数组的地址的计算
发布网友
发布时间: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