我有看起來像這樣的結構:複製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