Можно ли элементам массива указателей на void присваивать адреса структур - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, возникла проблема - создал структуру, одним из полей которой является массив указателей на void, массив нужен для создания связного списка, при записи в массив указателей на другие структуры проблем не возникает, но при попытке обращения к полям структур через эти указатели возникает ошибка компиляции: kirill@kirill-X401A1:~/C/HTML parser > gcc -o test test.c -std=c99 test.c: In function ‘main’: test.c:77:16: warning: dereferencing ‘void *’ pointer [enabled by default] Html.links[i]->a = 12; ^ test.c:77:16: error: request for member ‘a’ in something not a structure or union Указатель на void необходим т.к. заранее не известно с какой структурой будет осуществлена связь. Возможно ли вместо массива использовать union, для достижения цели? Пожалуйста подскажите как можно решить проблему.
Листинг программы
  1. struct html {
  2. int a;
  3. //struct head *links[LINKS];
  4. void *links[LINKS];
  5. };
  6. struct head {
  7. int a;
  8. void *links[LINKS];
  9. };
Листинг программы
  1. struct html Html;
  2. struct head Head;
  3. for (int i = 0; i < LINKS; i++) {
  4. Html.links[i] = (struct head *)&Head;
  5. Html.links[i]->a = 12; // ошибка
  6. }

Решение задачи: «Можно ли элементам массива указателей на void присваивать адреса структур»

textual
Листинг программы
  1. ( (struct head *)Html.links[i] )->a = 12;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы