使用指针数组调用函数

时间:2013-04-16 01:33:19

标签: c function pointers header extern

我的程序中有以下文件,带有某些功能定义的标题,以及带有函数体的程序。

something.h

typedef struct _foo {
 int id;
 int lucky_number;
} foo;

typedef void (*pointer_fc)(foo *);

void first(foo *);

void second(foo *);

void third(foo *);

extern pointer_fc fc_bases[3];

something.c

pointer_fc fc_bases[] = {first, second, third};

/* body of functions */

请注意,在头文件中我定义了一个指向函数的指针数组,在something.c程序中,函数与数组的每个元素相关联。

我们假设在某个时刻我需要在main.c程序中调用所有3个函数。有了这个,我如何使用extern指针数组在我的main.c中调用这个函数。

2 个答案:

答案 0 :(得分:1)

如果f1声明如下,作为结构foo的结构指针变量,

foo *f1;

然后你可以按如下方式调用函数first()和second(),

pointer_fc fc_bases[] = {first, second};

(*fc_bases[0])(f1);

(*fc_bases[1])(f1);

答案 1 :(得分:1)

当你调用它们时,函数指针会被自动解引用,所以它就像

一样简单
foo f;
fc_bases[0](&f);
fc_bases[1](&f);
fc_bases[2](&f);