Здесь у меня есть следующий код:
void **x;
void
push(void * value) {
void *a = x[1];
int *b = (int*)(&a[0]);
printf("%d\n", *b);
(((void*)&a))[*b + 1] = *value;
}
void
init() {
void **a;
void **b;
a = malloc(sizeof(void*) * 100);
b = malloc(sizeof(void*) * 100);
x = malloc(sizeof(void*) * 10000);
a[0] = (0);
b[0] = (0);
x[0] = a;
x[1] = b;
}
int
main(int argc, char **argv) {
init();
push(argv);
x[3] = "e";
x[4] = "e";
puts(x[4]);
}
По сути, моя цель - получить массив произвольного размера x
, который может содержать произвольные вложенные элементы . Затем я хочу трактовать a
в init
как двойной указатель на пустоту, так что он тоже может иметь что угодно. Я планирую просто сделать его динамически изменяемым массивом целых чисел. Тогда b
Я хочу содержать фиксированное количество произвольных элементов.
Однако я пробовал десятки комбинаций указателей и ссылок, и на данный момент я просто пробую и ошибаюсь. Получаем это на одной из последних конфигураций.
$ make test
test/test.c:19:25: error: incomplete type 'void' is not assignable
(((void*)&a))[*b + 1] = *value;
~~~~~~~~~~~~~~~~~~~~~ ^
1 error generated.
make: *** [test] Error 1
У меня нет супер solid gr asp указателей для выполнения sh и я задаюсь вопросом, можно ли мне указать правильное направление.