Re: [問題] row-major的問題

看板C_and_CPP作者 (啤酒肚)時間14年前 (2011/03/20 00:36), 編輯推噓2(205)
留言7則, 6人參與, 最新討論串2/2 (看更多)
※ 引述《popopupu (碰碰碰碰碰碰碰碰碰碰碰)》之銘言: : 我想請問一下 : 如果一個3維陣列 : A[3][4][5] 是row-major的 : 這樣應該怎麼排列呢? : 我知道row major是先把一個row裡面每一個值 : 依序丟到記憶體裡 : 二維的會算 : 但三維的就不會了 : 可以請大家解說一下嗎~ 數組(很不喜歡陣列這詞,會讓人誤以為是講死2維): 假設 大小是A[N][M][L] row major (ex : C/C++): A[i][j][k] -> A[ (i * M + j) * L + k) ] cloumn major (ex : fortran) A(i, j, k) -> A( i + N * (j + k * M) ) 但若是用指標來開,就不一定嚕。 用二維來講,大小為N*M; int **A; A = (int**)malloc(N*sizeof(int*)); /* 這行意思是 開一塊空間來存N個int的指標 這空間的首位置坐標,放在A裡面 */ /*再接下來,開N塊長度為M*sizeof(int)的紀憶體空間 , 分別把其首位置座標,放在剛剛的開的那塊空間裡 */ for(int i = 0; i< N; i++) *(A + i) = (int*)malloc(M*sizeof(int)); 住意,這時"大多時候"後面開的記憶體是連續的。 但有時分配到的,有幾塊可能是"畸零地" 既該區塊,原為非使用, 但前後為使用中之記憶體區塊。 雖然機會不是很大, 但還是有一定的可能性。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.138.67

03/20 00:41, , 1F
row/col major 那邊好像講剛好相反?
03/20 00:41, 1F
thx 已修改 ※ 編輯: DrStein 來自: 115.43.138.67 (03/20 00:44)

03/20 00:56, , 2F
其實數組個人認為很容易讓人以為是 tuple 耶...
03/20 00:56, 2F

03/20 03:04, , 3F
原po大陸人 (確認
03/20 03:04, 3F

03/20 03:17, , 4F
數組應該是matrix中國那邊的翻譯?!
03/20 03:17, 4F

03/20 03:20, , 5F
數組-> Array, matrix-> 矩陣(專指二維)
03/20 03:20, 5F
※ 編輯: DrStein 來自: 115.43.138.67 (03/20 03:31)

03/23 21:40, , 6F
這邊的 tuple 應該是譯為數組,而且我第一次聽到陣列
03/23 21:40, 6F

03/23 21:40, , 7F
專指二維
03/23 21:40, 7F
文章代碼(AID): #1DXDkGH7 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DXDkGH7 (C_and_CPP)