指针函数

2019-07-21 03:51发布

请问下面两段之间是什么关系呢,查资料越看越糊涂了……谢谢大家!
typedef struct{
REGION_T region;
int (* dot)(int ,int ,COLOR_T /* c */);
int (* line)(int /* x0 */,int /* y0 */,int /* x1 */,int /* y1 */,COLOR_T c);
int (* rect)(RECT_T * /* r */);
int (* box)(BOX_T * /* b */ );
int (* set_cursor)(int /* x */,int /* y */);
int (* line_to)(int /* x */,int /* y */,COLOR_T /* c */);
int (* arrow)(int x,int y,int dir,COLOR_T c);
int (* processbar)(PROCESSBAR_T *);
int (* splitter)(SPLITTER_T *);
int (* check_box)(CHECK_BOX_T *);
int (* circle)(int x,int y,int r,int fill,COLOR_T c);
int (* scrollbar)(SCROLLBAR_T *);
int (* show_picture)(int x,int y,int width,int height,char * path);
int (* dialog)(const char * fmt,...);
}GUI_T;



static int dot(int x, int y, COLOR_T c);
static int line(int /* x0 */, int /* y0 */, int /* x1 */, int /* y1 */, COLOR_T);
static int rect(RECT_T *);
static int box(BOX_T *);
static int line_to(int /* x */, int /* y */, COLOR_T /* c */);
static int set_cursor(int /* x */, int /* y */);
static int draw_arrow(int x, int y, int dir, COLOR_T c);
static int processbar(PROCESSBAR_T *);
static int splitter(SPLITTER_T *);
static int check_box(CHECK_BOX_T *);
static int circle(int x, int y, int r, int fill, COLOR_T c);
static int scrollbar(SCROLLBAR_T *);
static int show_picture(int x,int y,int width,int height,char * path);


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
03零三邓何芯桃
1楼-- · 2019-07-21 07:48
有出现什么问题吗?
美丽好心情
2楼-- · 2019-07-21 12:34
03零三邓何芯桃 发表于 2019-3-26 14:32
有出现什么问题吗?

没出现问题,就是搞不明白三者之间的关系,再加上下面这一段
GUI_T gui = {
        .dot = dot,
        .line = line,
        .rect = rect,
        .box = box,
        .arrow = draw_arrow,
        .set_cursor = set_cursor,
        .line_to = line_to,
        .processbar = processbar,
        .splitter = splitter,
        .check_box = check_box,
        .circle = circle,
        .scrollbar = scrollbar,
        .show_picture = show_picture,
        .region.x0 = 0,
        .region.y0 = 0,
        .region.x1 = LCD_XSIZE,
        .region.y1 = LCD_YSIZE
};
Psheng
3楼-- · 2019-07-21 12:52
就是一个结构体内部有很多的函数指针   然后赋值就是将对应的函数的地址分配给函数指针
LevenC
4楼-- · 2019-07-21 16:55
本帖最后由 LevenC 于 2019-3-26 15:49 编辑

你发的两段代码,上面的一段是结构体,结构体内部定义的是函数指针变量;下面的一段就是普通的函数声明。至于三楼的代码,就是一个结构体变量赋值。没有你说的指针函数。


int (* dot)(int ,int ,COLOR_T c);  这个是函数指针变量;

static int dot(int x, int y, COLOR_T c);  这个是函数声明;

如果是  int* dot(int ,int ,COLOR_T c);  也是函数声明,声明了一个指针函数;
ZHDX
5楼-- · 2019-07-21 18:11
 精彩回答 2  元偷偷看……
美丽好心情
6楼-- · 2019-07-21 18:37
ZHDX 发表于 2019-3-26 16:22
简单讲解一下吧

这是C语法问题, 比较容易把人搞糊涂.

谢谢啦

一周热门 更多>