Я имею следующую структуру:Как я бросил этот указатель
struct Map {
void* arr; // includes pointers to certain blocks of memory
int mem_block_count;
};
Пустота * обры держат указатели на определенные клетки в памяти. Каждая ячейка содержит указатель void * на другую ячейку в памяти (в виде связанного списка) строку char * и значение со своим размером.
Вы должны уметь захватить один из этих указателей в ячейку, сделав arr [i], где i - индекс - это правильно?
Я пытаюсь получить доступ к первому указателю на одну из этих ячеек, что, вероятно, arr [0]. Затем я хочу получить доступ к указателю на следующую ячейку памяти. Но это недействительный тип. Итак, как мне добраться до него? Для получения доступа к char *, я просто перемещаюсь в памяти, а затем выполняю strcpy. Но как мне получить доступ/отменить следующий указатель?
EDIT: Я также подумал о том, чтобы наложить указатель на void на int, но я не уверен, что получаю правильное значение. Что-то вроде:
int *next_pointer;
next_pointer = (int*) map->arr[i]
Но разве это не сохраняет указатель на указатель, когда я использую это как int? Как правильно разыскать указатель на указатель?
EDIT - Не мог я также, потому что это связанный список указателей, также сделать что-то вроде: map-> arr + index * sizeof (void *), чтобы добраться до начала данной ячейки?
Действительно ли 'arr' всегда указывает на тот же тип структуры или может различать точку' arr' для разных структур? –
Вам нужны указатели на указатели: 'void ** arr;' – pmg
'void * arr;' - это единственный указатель, а не «указатели». Если вы имеете в виду, что это указывает на блок памяти, в котором хранятся некоторые указатели, тогда вы должны предоставить эти данные перед разыменованием. 'Void *' не помнит, откуда он пришел. –