如何在2D整数数组上使用malloc

时间:2015-06-05 15:20:05

标签: c arrays malloc

如何定义第二维已使用MAX_VALUES定义的二维数组。我希望能够将内存分配给第二维。以下是我的尝试。我想要一个A [1000] [mallocd]

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

}

3 个答案:

答案 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的回答是建议的。)