Вызов функции из структуры через указатель - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д