Вызов функции из структуры через указатель - 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; }
Объяснение кода листинга программы
- Включаем стандартную библиотеку файлов
- Определяем функцию
ret42
, которая возвращает число 42 - Определяем структуру
foo
, которая содержит указатель на функциюp
и саму функциюfun
- Инициализируем поле
fun
структурыfoo
с функциейret42
- Вызываем функцию
foo.fun()
и выводим результат на экран с помощью функцииprintf
- Завершаем программу и возвращаем 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д