[語法] 在C++的header如何使用2維陣列?

看板C_and_CPP (C/C++)作者 (SOSOYA)時間16年前 (2009/03/27 12:08), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/2 (看更多)
header檔用int a[][]是不予許的 所以我改用int **a 現在想動態宣告一個 3 x 5 的array 在 C 的 source file 裡面我會這樣用 a=(int**)malloc(sizeof(int*)*3); int i; for(i=0;i<3;i++) *(a+i)=(int*)malloc(sizeof(int)*5); 但是 C++ 中要如何定義第一維是3個element? 試了 a=new int*[3]; 會出現compile error ,除了用vector想不到別的辦法了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.99.0.10

03/27 17:22, , 1F
extern ?
03/27 17:22, 1F

03/27 17:37, , 2F
extern 是指去使用C宣告出來的2維陣列嗎?
03/27 17:37, 2F

03/27 18:13, , 3F
int *a[3]; a[0] = malloc(..); a[1] = malloc(..) .
03/27 18:13, 3F

03/27 19:17, , 4F
回樓上,我2個維度都要是動態宣告的
03/27 19:17, 4F

03/27 19:23, , 5F
而且希望不要在C++用malloc函式
03/27 19:23, 5F

03/27 19:25, , 6F
其實爬文「動態」可能就會有你要的答案了
03/27 19:25, 6F

03/27 19:53, , 7F
new int[w*h]; 然後取出使用int[i+j*w]等效int[i][j]
03/27 19:53, 7F

03/27 19:53, , 8F
習慣了就很方便 很多開源碼都這樣寫
03/27 19:53, 8F

03/27 19:54, , 9F
感謝樓上,雖然我也想過用一維陣列模擬,但覺得太麻煩
03/27 19:54, 9F

03/27 19:55, , 10F
而且想用 a[i][j]的方式存取array ,所以才上來問問有沒有
03/27 19:55, 10F

03/27 19:55, , 11F
更方便的解法
03/27 19:55, 11F

03/27 20:06, , 12F
抱歉,我耍笨了 a=new int*[3] 是可以的 Orz ...
03/27 20:06, 12F
文章代碼(AID): #19p55BNu (C_and_CPP)
文章代碼(AID): #19p55BNu (C_and_CPP)