如何定义第二维已使用MAX_VALUES定义的二维数组。我希望能够将内存分配给第二维。以下是我的尝试。我想要一个A [1000] [mallocd]
的数组#define MAX_VALUES 1000
int
main(){
int n= 10;
int *A[MAX_VALUES] = malloc(10 * sizeof(int));
}
答案 0 :(得分:2)
试试这个
int (*A)[n] = malloc(MAX_VALUES * sizeof(*A));
它将分配连续的2D数组。
答案 1 :(得分:1)
试试这个:
int*A[MAX_VALUES],n;
for(i=0;i<MAX_VALUES;i++)
A[i]=malloc(n*sizeof(int);
它将具有MAX_VALUE行,其中包含coloumns mallocked的数量。
答案 2 :(得分:1)
int *A[MAX_VALUES]
是一个int
指针数组,已经静态分配。如果要分配每个指针指向的一些空间,则必须在数组上进行迭代,并为每个指针指定不同的malloc
。否则你将不得不重新定义你的A
(例如@haccks的回答是建议的。)