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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
 
double ret42(void)
{
    return 42;
}
 
int main(void)
{
    struct 
    {
        double *p;
        double (*fun)(void);
    } foo = { .fun = ret42 };
 
    printf("%.0f\n", foo.fun());
    
    
    return 0;
 
}

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

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

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


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

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

6   голосов , оценка 4 из 5
Похожие ответы