【发布时间】:2020-05-10 16:20:38
【问题描述】:
我想在 C 中创建一个包含二维数组的结构,但我不知道如何初始化它,因为我不知道维度。有办法吗?
struct myStruct {
int m[][];
};
【问题讨论】:
-
你必须使用指针
int **m和malloc来分配内存,当你想初始化它时。
标签: c arrays multidimensional-array struct
我想在 C 中创建一个包含二维数组的结构,但我不知道如何初始化它,因为我不知道维度。有办法吗?
struct myStruct {
int m[][];
};
【问题讨论】:
int **m和malloc来分配内存,当你想初始化它时。
标签: c arrays multidimensional-array struct
如果在编译时知道最外层的维度,那么您可以使用灵活的数组成员声明结构,例如
#define N 10
//...
struct myStruct {
size_t m;
int a[][N];
};
否则你应该使用int **类型的指针而不是数组
struct myStruct {
size_t m;
size_t n;
int **a;
};
其中数据成员m 和n 用于使用指针a 指定动态分配数组的维度。
在这两种情况下,数组都是动态分配的。
【讨论】:
您可以为其分配一些内存,例如使用 malloc 5 乘以 5,然后重新分配以防不够。
例如:
int *m= (int *)malloc(rows * cols * sizeof(int));
【讨论】: