数组地址计算

1、一维数组

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

2、二维数组

在这里插入图片描述

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

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值