如何定義第一維已經用MAX_VALUES定義的二維數組。我希望能夠爲第二維分配內存。以下是我所嘗試的。我想和A [1000] [mallocd]如何在2D整數數組上使用malloc
#define MAX_VALUES 1000
int
main(){
int n= 10;
int *A[MAX_VALUES] = malloc(10 * sizeof(int));
}
如何定義第一維已經用MAX_VALUES定義的二維數組。我希望能夠爲第二維分配內存。以下是我所嘗試的。我想和A [1000] [mallocd]如何在2D整數數組上使用malloc
#define MAX_VALUES 1000
int
main(){
int n= 10;
int *A[MAX_VALUES] = malloc(10 * sizeof(int));
}
陣列嘗試此
int (*A)[n] = malloc(MAX_VALUES * sizeof(*A));
它將分配連續的2D陣列。
試試這個:
int*A[MAX_VALUES],n;
for(i=0;i<MAX_VALUES;i++)
A[i]=malloc(n*sizeof(int);
這將有coloumns數MAX_VALUE行mallocked。
這不會分配一個2D數組,而是分配幾個數組。 @haccks答案給出了正確的方法。 –
@JensGustedt;至少有人在這裏得到了我的觀點:) – haccks
int *A[MAX_VALUES]
是一個int
指針的數組,它已經靜態分配。如果你想分配指定的空間,每個你必須在數組上迭代一個指針,併爲每個指針指定一個不同的malloc
。否則,你將不得不重新定義你的A
(例如@haccks的答案是建議的)。
你的'A'類型錯了,'*'綁定到左邊。你想'int(* A)[MAX_VALUES]'。 –