2012-09-20 30 views
-1

我試圖找到一種方法來分配一塊內存,但使用多維語法,我發現我正在尋找的確切東西在SO上。c中的malloc但使用2d語法...編譯不答案

malloc in C, but use multi-dimensional array syntax

但切斷後/粘貼有代碼:

int (*MAGICVAR)[200] = malloc(400 * sizeof *MAGICVAR); 
    MAGICVAR[20][10] = 3; 

此錯誤消息彈出:「void *類型的陣列不能被用於初始化int類型的實體(* )[012]「 而且它沒有幫助將malloc投射到」int *「或」int **「

我正在使用vs2010。

回答

2

首先,使用C編譯器,而不是C++編譯器來編譯C代碼,第二,如果你要使用C++編譯器,投malloc的聲明類型的返回值,

int (*MAGICVAR)[200] = (int(*)[200])malloc(400*sizeof *MAGICVAR); 
+0

+1 ,但是如果真的必須使用C++編譯器,他應該編寫C++而不是C,所以它會是'new int [400] [200]'或類似的東西。 –

+0

是的,必須使用C++編譯器。但是使用那個強制轉換「(int(*)[200])」是我無法得到的。不知道爲什麼這個問題得到了投票......但至少得到了答案!謝謝。 – PaeneInsula

相關問題