已知二維數組按行存儲
1. 已知二維數組A[M][N]採用按行為主的順序存儲結構,每個元素佔k個存儲單元,第一個元素的地址為L
其地址應該是(i*M)+(j+1)
2. 設二維數組A[1...m,1…n]按行存儲在數組B中,則二維數組A[i,j]在一維數組B中的下表為
A
A[i][j] 的前面有i-1行,而每行n個元素,所以 (i-1)*n表示i行前面的元素。
j就表示位於本行的第幾個元素,不用變。
3. 二維數組A按行順序存儲,其中每個元素佔2個存儲單元。
設二維數組a[8][10]中,每個數組元素佔4個存儲單元,數組元素a[2][2]按行優先順序存放的存儲地址是1000,則數組元素a[0][0]的存儲地址是
1000-4*(2*10+2)=912
4. 已知二維數組A[m][n]採用行序為主方式存儲,每個元素佔k個存儲單元,並且第一個元素的存儲地址是
答案是 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
5. c語言一個9x9的二維數組,按行序為主的存儲方式進行存儲,則第24個元素是怎麼算
int main()
{
int shuzu[9][9];
int i = 0,j=0;
for (i = 0;i<9;i++)
{
for (j = 0;j<9;j++)
{
shuzu[i][j] = i*9+j+1;//1--99
}
}
printf("第24個元素是%d,在第%d行,第%d列",shuzu[24/9][24%9],24/9,24%9);
return 0;
}
執行結果
6. 對於二維數組,有行優先順序和什麼兩種不同的存儲方式
對於二維數組,有行優先順序和列優先順序兩種不同的存儲方式。
二維數組A[m][n],這是一個m行n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t。
按「列優先順序」存儲時,地址計算為:LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t。存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組。
(6)已知二維數組按行存儲擴展閱讀:
數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。數組中的所有元素都具有相同類型(和結構類中的欄位不同,它們可以是不同類型)。數組中的元素存儲在一個連續性的內存塊中,並通過索引來訪問(和結構類中的欄位不同,它們通過名稱來訪問)。
在增加數組的維數時,數組所佔的存儲空間會大幅度增加,所以要慎用多維數組。使用 Variant 數組時更要格外小心,因為他們需要更大的存儲空間。
7. c語言中二維數組在內存中是按什麼優先存放的
C語言中
二維數組是按行優先存儲的
即 在內存中存一個二維數組時 先把數組中第一行的數組元素存完 再接著存下一行的 直到存完。
ps:定義一個二維數組 如 int a[m][n] 該數組為m行 n列的矩陣,在內存中 這樣順序存的:
a[0][0] a[0][1] ... a[0][n-1] a[1][0] a[1][1]...
不知道是不是幫到你的忙了
望採納
8. 已知10×12的二維數組A,按「行優先順序」存儲,每個元素佔1個存儲單元
A[5][5]的存儲地址
=A[1][1]的存儲地址+((5-1)*12+(5-1))*1
=420+((5-1)*12+(5-1))*1
=472
選擇答案C。