18二维数组A[0.10+,0.20],每个元素占3个存储单元,若按忧先存储,+A[4](5)+]的+

1个回答
展开全部
摘要 您好亲亲~~按照行优先存储,即每行连续存储,则 A[i][j] 的存储单元地址为:addr(A[i][j]) = addr(A[0][0]) + (i * 列数 + j) * 每个元素占用存储单元数因为每个元素占用 3 个存储单元,所以每个元素的地址相差 3 个存储单元。又因为 A[4][5] 的地址为 500,所以:addr(A[4][5]) = addr(A[0][0]) + (4 * 21 + 5) * 3 = 500解得:addr(A[0][0]) = 500 - (4 * 21 + 5) * 3 = 239因此,A[8][7] 的存储单元地址为:addr(A[8][7]) = addr(A[0][0]) + (8 * 21 + 7) * 3 = 239 + 531 = 770因此,A[8][7] 的地址为 770。
咨询记录 · 回答于2023-03-16
18二维数组A[0.10+,0.20],每个元素占3个存储单元,若按忧先存储,+A[4](5)+]的+
18题的解题过程
您好亲亲~~按照行优先存储,即每行连续存储,则 A[i][j] 的存储单元地址为:addr(A[i][j]) = addr(A[0][0]) + (i * 列数 + j) * 每个元素占用存储单元数因为每个元素占用 3 个存储单元,所以每个元素的地址相差 3 个存储单元。又因为 A[4][5] 的地址为 500,所以:addr(A[4][5]) = addr(A[0][0]) + (4 * 21 + 5) * 3 = 500解得:addr(A[0][0]) = 500 - (4 * 21 + 5) * 3 = 239因此,A[8][7] 的存储单元地址为:addr(A[8][7]) = addr(A[0][0]) + (8 * 21 + 7) * 3 = 239 + 531 = 770因此,A[8][7] 的地址为 770。
答案不是572吗
你算的是,行优先了,题目是列优先
假设按列优先存储,则 A[i][j] 的存储单元地址为:addr(A[i][j]) = addr(A[0][0]) + (j * 行数 + i) * 每个元素占用存储单元数因为每个元素占用 3 个存储单元,所以每个元素的地址相差 3 个存储单元。又因为 A[4][5] 的地址为 500,所以:addr(A[4][5]) = addr(A[0][0]) + (5 * 11 + 4) * 3 = 500解得:addr(A[0][0]) = 500 - (5 * 11 + 4) * 3 = 233因此,A[8][7] 的存储单元地址为:addr(A[8][7]) = addr(A[0][0]) + (7 * 11 + 8) * 3 = 233 + 251 = 484因此,A[8][7] 的地址为 484。
没答案啊~~
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消