2015-06-05 77 views
2

如何定義第一維已經用MAX_VALUES定義的二維數組。我希望能夠爲第二維分配內存。以下是我所嘗試的。我想和A [1000] [mallocd]如何在2D整數數組上使用malloc

#define MAX_VALUES 1000 
int 
main(){ 
    int n= 10; 
    int *A[MAX_VALUES] = malloc(10 * sizeof(int)); 

} 
+0

你的'A'類型錯了,'*'綁定到左邊。你想'int(* A)[MAX_VALUES]'。 –

回答

2

陣列嘗試此

int (*A)[n] = malloc(MAX_VALUES * sizeof(*A)); 

它將分配連續的2D陣列。

1

試試這個:

int*A[MAX_VALUES],n; 
for(i=0;i<MAX_VALUES;i++) 
    A[i]=malloc(n*sizeof(int); 

這將有coloumns數MAX_VALUE行mallocked。

+1

這不會分配一個2D數組,而是分配幾個數組。 @haccks答案給出了正確的方法。 –

+0

@JensGustedt;至少有人在這裏得到了我的觀點:) – haccks

1

int *A[MAX_VALUES]是一個int指針的數組,它已經靜態分配。如果你想分配指定的空間,每個你必須在數組上迭代一個指針,併爲每個指針指定一個不同的malloc。否則,你將不得不重新定義你的A(例如@haccks的答案是建議的)。