C 谁能给我解释一下这个密码吗?

C 谁能给我解释一下这个密码吗?,c,struct,function-pointers,C,Struct,Function Pointers,C代码来演示函数指针的使用 与typedef void(*DrawFunc)(struct geobject)及其在程序中的用法混淆。请解释 typedef void(*DrawFunc)(struct geobject)意味着DrawFunc现在是指向函数的typedef(或名称/别名)指针,该函数将struct geobject作为参数,并返回void 在程序中,声明了一个函数指针数组: DrawFunc DrawArr[]={drawcir,drawrec,drawtrg}; 所有三个函

C代码来演示函数指针的使用

与typedef void(*DrawFunc)(struct geobject)及其在程序中的用法混淆。请解释

typedef void(*DrawFunc)(struct geobject)
意味着DrawFunc现在是指向函数的
typedef
(或名称/别名)指针,该函数将
struct geobject
作为参数,并返回void

在程序中,声明了一个函数指针数组:

DrawFunc DrawArr[]={drawcir,drawrec,drawtrg};
所有三个函数drawcir()、drawrec()和drawtrg()都遵守typedef
DrawFunc
的定义,并且可以使用别名。

“请解释”远不是一个具体的问题。职业训练局的范围太广。这可能会有帮助:
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;
}
DrawFunc DrawArr[]={drawcir,drawrec,drawtrg};