Welcome 歡迎光臨! 愛上網路 - 原本退步是向前

陣列 --橫向為行,縱向為列。

A(m,n)橫向為行,縱向為列。

給予兩個已知位置,求A[i, j]之位址,須自行判斷出RowColumn-major

Row-Major時,列數較大的元素 ⇒ 位址必較大
Row-Major時,列數較小的元素 ⇒ 位址必較小
Column-Major時,行數大的元素 ⇒ 位址必較大
Column-Major時,行數小的元素 ⇒ 位址必較小

 

以列為主

左右  在前

A[i,j] = Lo + (i * n + j) * d

以行為主

上下  在後

A[i,j] = Lo + (i + j * m )* d

 

 

 

  • 110國立臺南女中

2. 在程式中,宣告一個陣列(array)為int k[m][n],假設陣列k的每個元素所佔記憶體空間為4個單位,陣列k的第一個元素為k[0][0],若k[2][4]及k[4][2]的記憶體位址分別為302和238,請問k[0][0]的記憶體位址為 150

 

  • 111 新竹市

38.(B)設陣列a是一個大小為20的一維陣列,且陣列a在記憶體之起始位置為100,且每個元素都需要4個位元組的儲存空間。則陣列元素a[21]的記憶體位置為何?(A) 180 (B) 184 (C) 186 (D) 188

ANS

0-21=>22 =>(22-1)*4=84=>84+100=184(這題比較有問題)

  • 111國立竹北高中

在C語言中,宣告一個二維陣列int A[2][2],該陣列的第1個元素為0x4D12,則其最後一個元素的位址為何: 【答:0x4D1E 】

ANS

配置的記憶體長度在不同編譯器上各不相同,可容納的大小各不相同,例如,在 64 位元 Ubuntu 16.04 中的 gcc 編譯器下,int 與 long 為 8 位元組,在 Windows 10 使用 MinGW-w64,GNU 編譯器版本是 8.1.0 型態的話,int 與 long 為 4 位元組,長度越長,表示可表示的整數值範圍越大。

用手算即可 

4D12+4 =>4D16+4=>4D1A+4=>4D1E

=====

三維陣列

112建國中學

8. 一個三維陣列A[0~3,0~6,0~4]用來存放整數,假設每一個陣列元素包含兩個記憶體位置,以row-major排列,若A[2][4][0]開始於記憶體位置1100,請問A[1][5][2]開始於記憶體位置?___1044_______ ANS 1100-(25+3)*2=1100-56=1044

 

108臺北市國中(104臺北市國中)

68.(C)      假設A[1…5,1…6,1…6]為三維陣列(3-dimensional array),其中每個元素是以為優先(row-major)的排列方式連續地儲存在電腦的記憶體中。若A的每個元素佔1個記憶體位置,且已知A[4, 6, 6]儲存位址為300,則此陣列中的元素A[2, 5, 3]會被存放在那個位址?

(A)157     (B)177     (C)219     (D)244

ANS : 36(黄)+6*6(紅)+5+4(綠)=81 =>300-81=219

 

 

[ 資訊科技 ] 瀏覽次數 : 119 更新日期 : 2024/08/14