C код для демонстрации использования указателей функций.Может ли кто-нибудь объяснить мне этот код?
#include<stdio.h>
struct geoobject
{
enum{CIR=0,REC,TRG}gcode;
union
{
struct cir{double x,y,r;}c;
struct rec{double x,y,w,h;}r;
struct trg{double x,y,b,h;}t;
};
};
typedef void(*DrawFunc)(struct geoobject);
Typedefed указатель функции.
void drawcir(struct geoobject go)
{
printf("Circle:(%lf,%lf,%lf)\n",go.c.x,go.c.y,go.c.r);
}
void drawrec(struct geoobject go)
{
printf("Rec:(%lf,%lf,%lf,%lf)\n",go.r.x,go.r.y,go.r.w,go.r.h);
}
void drawtrg(struct geoobject go)
{
printf("Triangle:(%lf,%lf,%lf,%lf)\n",go.t.x,go.t.y,go.t.b,go.t.h);
}
DrawFunc DrawArr[]={drawcir,drawrec,drawtrg};
int main(void)
{
struct geoobject go;
go.gcode=CIR;
go.c.x=2.3;go.c.y=3.6;go.c.r=1.2;
DrawArr[go.gcode](go);
go.gcode=REC;
go.r.x=4.5;go.r.y=1.9;go.r.w=4.2;go.r.h=3.8;
DrawArr[go.gcode](go);
go.gcode=TRG;
go.t.x=3.1;go.t.y=2.8;go.t.b=4.4;go.t.h=2.7;
DrawArr[go.gcode](go);
return 0;
}
Confused с ЬурейеЙ пустотой (* DrawFunc) (структура geoobject) и его использованием в program.Please объяснить.
«Пожалуйста, объясните», это далеко не единственный вопрос *. VTC слишком широк. –
возможно, это будет полезно: http://www.cprogramming.com/tutorial/function-pointers.html – yano