【问题标题】:How to use malloc on a 2D integer array如何在二维整数数组上使用 malloc
【发布时间】:2015-06-05 15:20:04
【问题描述】:

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

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

}

【问题讨论】:

  • 您的A 类型错误,* 绑定到左侧。你想要int (*A)[MAX_VALUES]

标签: c arrays malloc


【解决方案1】:

试试这个

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

它将分配连续的二维数组。

【讨论】:

    【解决方案2】:

    试试这个:

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

    它将有 MAX_VALUE 行,列数锁定。

    【讨论】:

    • 这不会分配一个二维数组,而是分配几个单独的数组。 @hacks 答案给出了正确的方法。
    【解决方案3】:

    int *A[MAX_VALUES] 是一个int 指针数组,它已经被静态分配了。如果您想分配由 each 指针之一指向的一些空间,则必须在数组上进行迭代并为每个指针分配不同的malloc。否则,您将不得不重新定义您的 A(例如,@hacks 的答案建议)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 2014-06-25
      • 2018-03-20
      • 2021-03-05
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多