Вызов функции из структуры через указатель - C (СИ)

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

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

надо вызвать функцию с структуры через указатель который также обьявлен в структуре, с выдилением дынамической памяти.... помогите в чем ошибаюсь
Листинг программы
  1. struct mak{
  2. double *p;
  3. double ptr();
  4. }obj;
  5. .......
  6. void main()
  7. {
  8. obj.p=(double *)malloc(sizeof(obj.ptr()));
  9. obj.p->obj.func(); // здесь ошибка
  10. }

Решение задачи: «Вызов функции из структуры через указатель»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. double ret42(void)
  4. {
  5.     return 42;
  6. }
  7.  
  8. int main(void)
  9. {
  10.     struct
  11.     {
  12.         double *p;
  13.         double (*fun)(void);
  14.     } foo = { .fun = ret42 };
  15.  
  16.     printf("%.0f\n", foo.fun());
  17.    
  18.    
  19.     return 0;
  20.  
  21. }

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку файлов
  2. Определяем функцию ret42, которая возвращает число 42
  3. Определяем структуру foo, которая содержит указатель на функцию p и саму функцию fun
  4. Инициализируем поле fun структуры foo с функцией ret42
  5. Вызываем функцию foo.fun() и выводим результат на экран с помощью функции printf
  6. Завершаем программу и возвращаем 0

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


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

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

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

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

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

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