所以我试图完成其中带有指针函数的结构的编写,这就是我写的
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);
(数组是对象的平行四边形类型的数组) 编译时返回此错误:
format指定类型“ double”,但参数 具有类型'float()(float,Coord,Coord)'(aka'float()(float,struct 坐标,结构坐标)')[-Werror,-Wformat] ... printf(“#Area =%.2f#\ n”,array [I] .areaFunc);
我以为我的指针函数正确,那么如何将指针函数转换为应该返回的实际值呢?
答案 0 :(得分:4)
如果array
是Parallelogram
的数组:
printf("Area = %.2f", array[i].areaFunc(array[i].base, array[i].upperR, array[i].lowerL));
您当前的代码试图将函数指针打印为浮点数,这显然是错误的。您需要调用所指向的函数。