按行序存儲
❶ 對於二維數組,有行優先順序和什麼兩種不同的存儲方式
對於二維數組,有行優先順序和列優先順序兩種不同的存儲方式。
二維數組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 個位元組。
(1)按行序存儲擴展閱讀:
數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。數組中的所有元素都具有相同類型(和結構類中的欄位不同,它們可以是不同類型)。數組中的元素存儲在一個連續性的內存塊中,並通過索引來訪問(和結構類中的欄位不同,它們通過名稱來訪問)。
在增加數組的維數時,數組所佔的存儲空間會大幅度增加,所以要慎用多維數組。使用 Variant 數組時更要格外小心,因為他們需要更大的存儲空間。
❷ 內存中,數組是按行存儲還是按列存儲
在c語言中,二維數組元素在內存中的存放順序是(按行存放)即在內存中線順序存放第一行的元素,再存放第二行的元素。
❸ 用壓縮存儲方式,以行序為主存儲,a11 為第一元素,其存儲地址為1,每個元素佔一
1、由於對稱性a85與a58是相同的,由於按照行存儲,第一行存儲10個;第二行存儲9個,開始元素為a22;第三行存儲8個,開始元素為a33;……;第五行開始元素為:a55,所以a58在地四個 故 總的存儲為:10+9+8+7+4=38 2、由於3^5=243,3^6=243*3>244,所以為6層
❹ 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;
}
執行結果
❺ C++ 二維數組按行序存儲和按列序存儲誰更好
其實都一樣,但是由於windows編程一直採用的按行排列方式,所以在C++中建議按行存儲;也有的編程軟體就是用的按列,如MATLAB