Предположим, у меня есть следующее:
typedef struct {
int itemSize;
int count;
void *list;
} Mystruct;
Mystruct *InitStruct(int itemSize, int count)
{
Mystruct *my = malloc(sizeof(Mystruct));
my->itemSize = itemSize;
my->count = count;
//What is the best way to initialize list? For example:
//my->list = malloc(count * sizeof(void *)); OR
//my->list = malloc(count * sizeof(itemSize));
}
//The following should return a pointer to the element stored at a given index
void *Retrieve(const MyStruct *my, int index)
{
void *item;
//What is the best way to return a pointer to the item at the given index from
//my->list?
}
Mystruct похож на массив, а список void * должен хранить элементы или указатели на элементы. Mystruct * InitStruct - это функция, которая инициализирует указатель Mystruct, а void * Retrieve - это функция, которая возвращает указатель на элемент, хранящийся в данном индексе.
Во-первых, как мне инициализировать список void *? Должно ли оно содержать фактические элементы или быть массивом указателей, указывающих на элементы?
Во-вторых, с помощью функции void * Retrieve, как мне вернуть указатель на элемент, сохраненный по указанному индексу в my-> list?