【问题标题】:C: Beginner question about bidimensional array in struct [duplicate]C:关于结构中二维数组的初学者问题[重复]
【发布时间】:2020-05-10 16:20:38
【问题描述】:

我想在 C 中创建一个包含二维数组的结构,但我不知道如何初始化它,因为我不知道维度。有办法吗?

struct myStruct {
      int m[][];
};

【问题讨论】:

  • 你必须使用指针int **mmalloc来分配内存,当你想初始化它时。

标签: c arrays multidimensional-array struct


【解决方案1】:

如果在编译时知道最外层的维度,那么您可以使用灵活的数组成员声明结构,例如

#define N 10
//...
struct myStruct {
      size_t m;
      int a[][N];
};

否则你应该使用int **类型的指针而不是数组

struct myStruct {
      size_t m;
      size_t n;
      int **a;
};

其中数据成员mn 用于使用指针a 指定动态分配数组的维度。

在这两种情况下,数组都是动态分配的。

【讨论】:

    【解决方案2】:

    您可以为其分配一些内存,例如使用 malloc 5 乘以 5,然后重新分配以防不够。

    例如:

    int *m= (int *)malloc(rows * cols * sizeof(int));
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 2020-10-24
      • 1970-01-01
      • 2021-09-18
      • 2011-01-12
      • 2018-01-08
      • 1970-01-01
      • 2014-01-25
      • 2013-07-22
      相关资源
      最近更新 更多