我试图用 C 来概括一下二维数组(结构)的概念
假设我有以下定义:
typedef struct group group;
struct group {
int members;
int neighbours;
char color;
};
#define NUM_CELLS 10
使用以下函数应该将一些数据从单个数组复制到多维数组:
void test_mgroup_arr(group clusters[][NUM_CELLS],group tests[NUM_CELLS], int num_groups) {
int i;
int j = 0;
for (i = 0; i < num_groups; ++i)
clusters[i][j] = tests[i];
}
这被称为:
int num_groups = 5;
group clusters[NUM_CELLS][NUM_CELLS];
group tests[NUM_CELLS];
tests[0].members = 101;
tests[0].neighbours = 111;
tests[1].members = 102;
tests[1].neighbours = 112;
tests[2].members = 103;
tests[2].neighbours = 113;
tests[3].members = 104;
tests[3].neighbours = 114;
tests[4] = tests[3];
test_mgroup_arr(clusters, tests, num_groups);
我希望函数中的代码将测试数组中的 5 个项目复制到多维数组中的正确位置。但是,这并没有按预期工作,在某些情况下甚至会出现段错误。
这怎么不正确?将结构从 1dim 数组复制到 2dim 数组的正确方法是什么?