我试图总结我的头约2维数组的概念(结构)的用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数组复制到2个dim数组的正确方法是什么?
我看不出有问题(与seg故障有关)。有没有其他代码可以省略? – hmjd
@hmjd segfaults(集群[i] [j] = test [i]行)的完整代码https://gist.github.com/3793595 –
'我期望函数中的代码复制5个项目从测试阵列到多维数组中的正确位置。“定义”正确的位置“。如果你想测试[n] ==集群[n] [0],那么你做对了。如果你想测试[n] ==集群[0] [n]那么你的'test_mgroup_arr()'是倒退 – Mike