Вызов функции из структуры через указатель - 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