Итак, я пытался написать структуру с указателями на функции, и это то, что я написал
typedef struct Coordinates {
float x;
float y;
} Coord;
typedef struct Parallelograms {
Coord upperR, lowerL;
float base;
float (*areaFunc)(float base, Coord upperR, Coord lowerL);
float (*perimeter)(float base, Coord upperR, Coord lowerL);
} Parallelogram;
Здесь я определяю функцию:
float area(float base, Coord upperR, Coord lowerL) {
return (base*(upperR.y-lowerL.y));
}
И затем в какой-то другой функции я называю это так:
Parallelogram para;
para.areaFunc = area;
Единственное, что я пытаюсь напечатать
printf("Area = %.2f", array[i].area);
(с массивом, являющимся массивом типа параллелограммаобъектов) Возвращает эту ошибку при компиляции:
формат указывает тип 'double', но аргумент имеет тип 'float () (float, Coord, Coord)' (aka 'float () (float, struct Coordinates, struct Coordinates) ') [-Werror, -Wformat] ... printf ("# Area =% .2f # \ n", массив [I] .areaFunc);
Я думал, что правильно понял функции указателя, так как я могу преобразовать функцию указателя в фактическое значение, которое она должна вернуть?