[問題] 請問要如何修改2x2 array的項數呢?

看板C_and_CPP (C/C++)作者 (TAKUA)時間16年前 (2010/01/20 08:26), 編輯推噓3(3015)
留言18則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 呃...例如宣告完一個array: int array[3][2]={{0,1},{2,3},{4,5}}; 之後,如果想要把他變成一個 [2][3] 的array要怎麼做呢? 還是沒有辦法修改?還是要用動態宣告呢? 希望得到的正確結果: 把 array 變成 array[2][3] = {{6,7,8},{9,10,11}} 之類的 我以為的方法是... 宣告另一個 array_b[2][3] = {{6,7,8},{9,10,11}}, 再把 &array_b[0][0] assign 給 array, 因為記得array 名字就是一個pointer的樣子 程式跑出來的錯誤結果: 沒想到它說: incompatible types in assignment of `int (*)' to `int[3][2]' 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) 是根本不知道這個code該怎麼寫...只能胡亂試 補充說明: 感謝各位...我的問題可能描述得不怎麼清楚...因為這只是作業可能會用到, 我自己卻沒什麼概念,只好硬著頭皮亂想...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.147.96

01/20 08:46, , 1F
所以你只想做矩陣的轉置? 如果確定大小就重新去assign
01/20 08:46, 1F

01/20 09:01, , 2F
重新assign是指...?
01/20 09:01, 2F

01/20 09:06, , 3F
pointer 和 array 是不一樣的東西, 重新 assign 就是去跑迴
01/20 09:06, 3F

01/20 09:06, , 4F
圈做 array_b[i][j] = array[j][i]; 這件事
01/20 09:06, 4F

01/20 10:38, , 5F
這樣就可以把他轉置過來嗎?
01/20 10:38, 5F

01/20 11:04, , 6F
int **a = new int *[ 2 ];
01/20 11:04, 6F

01/20 11:04, , 7F
for ( unsigned i = 0; i != 3; ++i )
01/20 11:04, 7F

01/20 11:05, , 8F
a[ i ] = new int [ 3 ];
01/20 11:05, 8F

01/20 11:06, , 9F
for 迴圈打錯, i != 2, 你這題就要動態配置, 再賦值
01/20 11:06, 9F

01/20 11:21, , 10F
如果固定是2x3變3x2(或反過來)應該不用動態配置吧.
01/20 11:21, 10F

01/20 11:21, , 11F
原po要不要先說清楚, 是要做矩陣轉置, 還是只是要重新
01/20 11:21, 11F

01/20 11:22, , 12F
以不同的lay out去解釋這一塊連續記憶體??
01/20 11:22, 12F

01/20 11:22, , 13F
要做轉置是ledia大說的; 如果只是要改變解讀array的lay
01/20 11:22, 13F

01/20 11:27, , 14F
out, 用 int (*array_b)[3] = (int (*)[3])array;
01/20 11:27, 14F

01/20 11:28, , 15F
Note: 上面這樣的作法不適用於二維動態配置(非連續)的
01/20 11:28, 15F

01/20 11:28, , 16F
時候; 原po要不要先想清楚自己到底要的是什麼@_@"
01/20 11:28, 16F

01/20 11:30, , 17F
另外, 如果維度與size固定, 改變解讀lay out更簡單的作
01/20 11:30, 17F

01/20 11:30, , 18F
法就是用union....XD
01/20 11:30, 18F
文章代碼(AID): #1BLastW- (C_and_CPP)
文章代碼(AID): #1BLastW- (C_and_CPP)