我有看起来像这样的结构:复制C静态数组到结构
typedef struct object {
entry **entries;
} object;
typedef struct entry {
int value;
} entry;
某处在我的代码我有条目的静态数组(具有一些随机数据初始化);
entry entries[][] = {... (doesn't matter)...};
如何将这些条目复制到对象中? 我需要的是这样的:
object obj;
obj.entries = entries;
编辑:我不希望每个元素在“for”循环复制。
经过建议:
好的。我有:
entry entries[initial_height][initial_width];
....initialize entries...
object obj;
int i;
obj.entries = (entry**) malloc(initial_height * sizeof(entry*));
for (i = 0 ; i < initial_height; i++) {
obj.entries[i] = (entry*) malloc(initial_width * sizeof(entry));
}
memcpy(obj.entries, entries, sizeof(entry) * initial_height * initial_width);
printf("%d\n", entries[0][0].value);
printf("%d\n", obj.entries[0][0].value);
而且我得到一个分段错误(第一个打印作品)。我还在做什么错了?
如果您知道要复制的元素的大小,请尝试使用memcpy进行复制 – Pradheep
它们有不同的类型!指针不是数组! – Olaf
1)不要将'malloc'和朋友的结果放在C中。2)你有一个指向指针的指针,而不是'struct'中的二维数组。这与2D阵列不一样! 3)你调用未定义的行为。 – Olaf