看板 C_and_CPP 關於我們 聯絡資訊
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
legnaleurc:extern ? 03/27 17:22
dcleft:extern 是指去使用C宣告出來的2維陣列嗎? 03/27 17:37
TConvertible:int *a[3]; a[0] = malloc(..); a[1] = malloc(..) . 03/27 18:13
dcleft:回樓上,我2個維度都要是動態宣告的 03/27 19:17
dcleft:而且希望不要在C++用malloc函式 03/27 19:23
james732:其實爬文「動態」可能就會有你要的答案了 03/27 19:25
kvykn:new int[w*h]; 然後取出使用int[i+j*w]等效int[i][j] 03/27 19:53
kvykn:習慣了就很方便 很多開源碼都這樣寫 03/27 19:53
dcleft:感謝樓上,雖然我也想過用一維陣列模擬,但覺得太麻煩 03/27 19:54
dcleft:而且想用 a[i][j]的方式存取array ,所以才上來問問有沒有 03/27 19:55
dcleft:更方便的解法 03/27 19:55
dcleft:抱歉,我耍笨了 a=new int*[3] 是可以的 Orz ... 03/27 20:06