数组地址计算

1、一维数组

设数组为A = a1,a2,a3,a4…ai…an;
每个数据元素占d个存储单位,则元素a[i]的存储地址为
Loc(A[i])=Loc(A[1])+(i1)dLoc(A[i])=Loc(A[1])+(i1)d Loc(A[i]) = Loc(A[1]) + (i-1)*dLoc(A[i])=Loc(A[1])+(i−1)∗d

2、二维数组

在这里插入图片描述

二维数组A[m][n]如图所示,
• 以“行序存储为主”,首元素 A[1][1] 的地址为  Loc(A[1][1])Loc(A[1][1])\ Loc(A[1][1])Loc(A[1][1]),每个元素占 d 个存储单元,求 A[i][j];( A[i][j] 有  i1\ i-1 行,即 (i1)n(i1)n\ (i-1)*n(i−1)∗n个元素,j 列前有 j1j1\ j-1j−1 个元素)
Loc(A[i][j])=Loc(A[1][1])+[(i1)n+(j1)]dLoc(A[i][j])=Loc(A[1][1])+[(i1)n+(j1)]d Loc(A[i][j]) = Loc(A[1][1])+[(i-1)*n+(j-1)]*dLoc(A[i][j])=Loc(A[1][1])+[(i−1)∗n+(j−1)]∗d 若行列下标均从0开始,则若行列下标均从0开始,则
Loc(A[i][j])=Loc(A[0][0])+[in+j]dLoc(A[i][j])=Loc(A[0][0])+[in+j]d Loc(A[i][j]) = Loc(A[0][0])+[i*n+j]*dLoc(A[i][j])=Loc(A[0][0])+[i∗n+j]∗d
• 以“列序存储为主”,求A[i][j];
Loc(A[i][j])=Loc(A[1][1])+[(j1)m+(i1)]dLoc(A[i][j])=Loc(A[1][1])+[(j1)m+(i1)]d Loc(A[i][j]) = Loc(A[1][1])+[(j-1)*m+(i-1)]*dLoc(A[i][j])=Loc(A[1][1])+[(j−1)∗m+(i−1)]∗d 若行列下标均从0开始,则若行列下标均从0开始,则
Loc(A[i][j])=Loc(A[0][0])+[jm+i]dLoc(A[i][j])=Loc(A[0][0])+[jm+i]d Loc(A[i][j]) = Loc(A[0][0])+[j*m+i]*dLoc(A[i][j])=Loc(A[0][0])+[j∗m+i]∗d

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值