1. 怎麼儲存二維數組
二維數組A[m][n]可以視為由m個行向量組成的向量,或者是由n個列向量組成的向量。
由於計算機的內存是一維的,多維數組的元素應排成線性序列後存入存儲器。數組一般不做插入和刪除操作,即結構中元素個數和元素間的關系不變。所以採用順序存儲方法表示數組。
1、 行優先存儲
將數組元素按行向量排列,第i+1個行向量緊接在第i個行向量後面。
【例】二維數組A[m][n]按行優先存儲的線性序列為:
A[0][0]、A[0][1]…A[0][n]、A[1][1]、A[1][1]…A[1][n]…A[m][n]、A[m][1]…A[m][n]
在PASCAL和C語言中數組按行優先順序存儲。
2、 列優先存儲
將數組元素按列向量排列,第i+1個列向量緊接在第i個列向量後面。
【例】二維數組A[m][n]按列優先存儲的線性序列為:
A[0][0]、A[1][0]…A[m][0]、A[0][1]、A[1][1]…A[m][1]…A[m][1]、A[0][n]…A[m][n]
ORTRAN語言中,數組按列優先順序存儲。
2. 對於二維數組,有行優先順序和什麼兩種不同的存儲方式
對於二維數組,有行優先順序和列優先順序兩種不同的存儲方式。
二維數組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 個位元組。
(2)二維數組存儲圖解擴展閱讀:
數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。數組中的所有元素都具有相同類型(和結構類中的欄位不同,它們可以是不同類型)。數組中的元素存儲在一個連續性的內存塊中,並通過索引來訪問(和結構類中的欄位不同,它們通過名稱來訪問)。
在增加數組的維數時,數組所佔的存儲空間會大幅度增加,所以要慎用多維數組。使用 Variant 數組時更要格外小心,因為他們需要更大的存儲空間。
3. 簡要說明二維數組中的每個元素在計算機中是怎麼樣存儲的
二維數組中的每一個元素在計算機當中的內存中都是連續存儲的。具體存儲的格式根據不同的編譯系統,有不一樣的。大多數的編譯系統是仙存儲第一行,第一個元素,然後再存儲第一行的第二個元素,照此類推到第一行的最後一個元素,存儲完成以後再存儲第二二行的第一個元素,直到全部元……
4. 二維數組有哪2種順序存儲方式並分別寫出求a的起始地址的公式,其中a1
二維數組有兩種存儲⽅式,⼀種以 行 為主序,⼀種以 列 為主序(行優先、列優先)
5. 二維數組是如何存儲的
二維數組A[m][n]可以視為由m個行向量組成的向量,或者是由n個列向量組成的向量。
由於計算機的內存是一維的,多維數組的元素應排成線性序列後存入存儲器。數組一般不做插入和刪除操作,即結構中元素個數和元素間的關系不變。所以採用順序存儲方法表示數組。
1、行優先存儲
將數組元素按行向量排列,第i+1個行向量緊接在第i個行向量後面。
【例】二維數組A[m][n]按行優先存儲的線性序列為:
A[0][0]、A[0][1]…A[0][n]、A[1][1]、A[1][1]…A[1][n]…A[m][n]、A[m][1]…A[m][n]
在PASCAL和C語言中數組按行優先順序存儲。
2、列優先存儲
將數組元素按列向量排列,第i+1個列向量緊接在第i個列向量後面。
【例】二維數組A[m][n]按列優先存儲的線性序列為:
A[0][0]、A[1][0]…A[m][0]、A[0][1]、A[1][1]…A[m][1]…A[m][1]、A[0][n]…A[m][n]
ORTRAN語言中,數組按列優先順序存儲。
6. 4、二維數組的元素在存儲器中是如何存儲的
這個得看你的二維數組是怎麼個狀況了。一、如果是靜態申請的。那麼一般是二種儲存方式,1.行優先。2.列優先。如 arr[3][3];1.行優先。在內存中是一段連續的空間。arr[0][0],arr[0][1],arr[0][2],arr[1][0]...............arr[2][2].2.列優先。...........................................arr[0][0],arr[1][0],arr[2][0],arr[0][1]......................arr[2][2].二、如果是動太開辟的。如C/C++中的new ,malloc等來開辟,Java中的 new 來開辟時。就是另一種情況了。如 C/C++中 int * arr;Java中 int [] arr;//在這我就用一維數組來示例,二維數組是同理的。在用的時候,arr = (int*)malloc(sizeof(int)*SIZE);//SIZE 是數組的長度。 arr = new int[SIZE];那麼arr 只是一個引用地址,實際的數據是存在 堆(heap)中的。有問題可以補充。
7. 二維數組在內存中是如何存儲的
二維數組在內存中是如何存儲的,這不是一定的,具體要看編譯系統是如何規定的。
對於多數編譯系統而言,都是採用「行優先」的策略,比如一個int a[5][3]數組,它是從首地址開始依次是a[0][0],a[0][1],a[0][2],然後是a[1][0],a[1][1],a[1][2],……。直到最後是a[4][0],a[4][1],a[4][2]。