二維陣列是如何儲存的,二維陣列在記憶體中是如何存放的

時間 2021-09-07 13:31:17

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樓:

前面一共需要6*4+3個資料,每個資料4個位元組,怎麼也得需要4*27個位元組,這個地址我就不清楚了,一個地址是2個位元組?可是要弄到108還是有點難度

6*4+3=27

100+27(?)=127

3樓:匿名使用者

100+ (6+1)*3+3

4樓:我們都愛百合花

答案應該是:100+(6*4+3)*4=100+108=208

二維陣列在記憶體中是如何存放的

5樓:

因為你的a[m][n]有12個元素,所以end-begin(即p-a[0])肯定恆為11。因為指標相減的結果是元素差而不是地址差。比如若有int a[3]=;則&a[1]-&a[0]=1,而它們的地址值卻相差4。

在記憶體中無論幾維陣列,都是按一維陣列存放的。比如二維陣列,第一行最後一個元素後就緊接著第二行的第一個元素,依此類推。這也是多維陣列都可以降維為一維陣列來處理的原因。

c語言中二維陣列在記憶體中怎樣儲存?

6樓:匿名使用者

嚴格意義上說不存在二維陣列,只是陣列裡的每個元素是一個一維陣列,而記憶體是一段連續的空間,根據你申請一個變數的順序按地址從低到高排,所以二維陣列不可能像一個矩陣那樣在記憶體中排列,這就涉及到它是按行依次往下排,還是按列往下排,而在c++中是按行,既 int a[2][2]

a[0][0]

a[0][1]

a[1][0]

a[1][1]

4、二維陣列的元素在儲存器中是如何儲存的?

c語言問題:c語言中二維陣列在記憶體中怎樣儲存?

7樓:匿名使用者

嚴格意義上說不存在copy二維bai陣列,只是陣列裡的每du個元素是一個一zhi維陣列,而記憶體是一段連續dao的空間,根據你申請一個變數的順序按地址從低到高排,所以二維陣列不可能像一個矩陣那樣在記憶體中排列,這就涉及到它是按行依次往下排,還是按列往下排,而在c++中是按行,既 int a[2][2]

a[0][0]

a[0][1]

a[1][0]

a[1][1]

8樓:匿名使用者

嚴格意義上說不存在二維陣列,只是陣列裡的每個元素是一個一維陣列,而記憶體是

專一段連續的空間屬,根據你申請一個變數的順序按地址從低到高排,所以二維陣列不可能像一個矩陣那樣在記憶體中排列,這就涉及到它是按行依次往下排,還是按列往下排,而在c++中是按行,既 int a[2][2]

a[0][0]

a[0][1]

a[1][0]

a[1][1]

9樓:匿名使用者

在c/c++中多維數bai組都是以行的形式連du續地分佈在記憶體中的,zhi來個例子dao:

int a[2][2];

則其在記憶體中內

的表現方式為:

a[0][0], 低地址

容a[0][1],

a[1][0],

a[1][1],高地址

10樓:匿名使用者

指向一維陣列的指標陣列。

二維陣列的元素在儲存器中是如何儲存的

11樓:匿名使用者

分兩種。行主對映和列主對映。

都是對映到一個線性關係中。

在行主中。

比如a[0][0]是陣列的首地址p,那麼a[1][2]的地址就是p+size*(1*行數+2)。

定義二維陣列4 4,二維陣列中的陣列元素都用鍵盤賦值。求出該二維陣列中主對角線的和C語言

include stdio.h include conio.h include stdlib.h main for i 0 i 4 i printf 此矩陣主對角線的和為 d n num include define m 4 int main int i,j,a m m sum 0 for i 0 ...

C二維陣列如何初始化為,C 二維陣列如何初始化為0

du瓶邪 include using namespace std int main cout c 也可以寫 int a 10 8 簡單的就是 memset a,0,sizeof a 例如 int a 3 4 a 0 0 0 這樣寫第一個元素初始化為0,其餘也會初始化為0還有一種就是 memset 要...

二維陣列行列互換,並存到另二維陣列中

具體演算法如下 include int main int i,j,a 2 3 b 3 2 printf array a n for i 0 i 1 i 處理a陣列中的一行中各元素 for j 0 j 2 j 處理a陣列中的某一列元素 printf 5d a i j b j i a i j print...