已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是

已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是______。为什么?

答案是 LOC(A[0][0]) + (i * n + j) * k
因为是采用行序为主方式存储的,即先存第1行,再第2行、第三行……这样。
所以A[i][j]前面有i行元素,每行元素有n个;A[i][j]为本行第j+1个元素,本行有j个元素位于A[i][j]前,所以A[i][j]到数组的起始位置处,中间共有i * n + j个元素,每个元素占k个存储单元,所以就是LOC(A[0][0]) + (i * n + j) * k追问

你的行和列都从0开始的还是1开始的啊

追答

从0开始啊,因为它说了第一个元素是A[0][0],所以行和列都是从0开始的

追问

那我以为是i*(n+1)啊,不是应该一行有n+1个数吗

懂了,懂了,谢谢

温馨提示:答案为网友推荐,仅供参考
相似回答