我真的不知道如何正確地爲頭文件中定義的結構數組分配內存。 頭的代碼如下所示:爲結構數組分配內存(在頭文件中定義)
header.h
typedef struct _Transform Transform;
header.c
struct _Transform{
char c;
//the actual operation which is an union
Operation o;
};
應該在我的主要程序做這樣的事情?
program.c
#include "header.h"
Transform **transform = calloc(MAX_NO_OF_TRANSFORMS, sizeof(Transform*));
if(!transform) {
perror("Error allocating memory for transform");
exit(EXIT_FAILURE);
}
for(i = 0; i < MAX_NO_OF_TRANSFORMS; i++)
transform[i] = calloc(1, sizeof(Transform*));
如果是這樣,我應該怎麼再打電話了嗎?我有一個錯誤,當我嘗試調用
transform[0].c = 'a';
順便說一句,頭被正確連接和工作。 謝謝!
你想要它靜態分配,還是動態?你想要一個一維數組還是二維數組?請澄清。分配一個'struct _Transform'數組就像'struct Transform array [ARRAY_LENGTH]'一樣簡單,但是從你的代碼看起來你需要別的東西。 –
對不起,我想要一個1D數組,但是我不能進行Transform數組[ARRAY_LENGTH],因爲struct是在頭中定義的。 –
你爲什麼不能?只要'struct _Transform'的定義在範圍內,就可以聲明它的一個數組。您可以包含標題,然後在源文件中將該數組聲明爲'Transform transform [MAX_NO_OF_TRANSFORMS]'。在這種情況下使用動態內存過於誇張,尤其是因爲您似乎在編譯時已知數組大小的上限。 –