【问题标题】:how to allocate memory dynamically for a two dimensional array [duplicate]如何为二维数组动态分配内存[重复]
【发布时间】:2013-06-17 01:08:33
【问题描述】:

我最近参加了一次面试,他们让我编写一个程序来为二维数组(i=3 和 j=2)动态分配内存

【问题讨论】:

  • 这不是问题。这是 Facebook 状态更新。

标签: c dynamic-arrays


【解决方案1】:
int *a = (int*)malloc(i*j*sizeof(int));

你可以通过a[k*i+l];获得a[k][l]

【讨论】:

    【解决方案2】:

    你们中的一些人会讨厌这个,但它是我的最爱。主要优点是它可以通过单个free 取消分配,并且仍然允许通过A[r][c] 进行访问。

    #include <stdlib.h>
    
    int main(void)
    {
            int num_row = 3, num_col = 2, r;
            int ** A;
    
            A = malloc(num_row*(sizeof(*A)+num_col*sizeof(**A)));
    
            for (r = 0; r < num_row; r++)
            {
                    A[r] = (int*)(A+num_row)+r*num_col;
            }
    
            /* Accessing element at row r and column c is through:
             *
             *      A[r][c].
             */
    
            free(A);
    
            return 0;
    }
    

    【讨论】:

      【解决方案3】:
      int i = 3;
      int j = 2;
      
      int** a = malloc(i * sizeof(int*));
      
      for (unsigned int k = 0; k < i; k++) {
          a[k] = malloc(j * sizeof(int));
      }
      
      // Now you can use it.
      a[0][0] = 0;
      a[2][1] = 3;
      

      您在提问之前没有尝试搜索 SO 问题数据库吗?

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 1970-01-01
        • 2020-07-11
        • 1970-01-01
        • 2014-07-19
        • 1970-01-01
        • 2012-11-12
        • 2021-07-21
        相关资源
        最近更新 更多