#include <stdio.h>
#include <string.h>
static void *function[2][2];
int *f1(void *args)
{
int i = *((int *)args);
printf("[%s:%d]%d\n", __func__, __LINE__,i);
return 0;
}
int *f2(void *args)
{
char *s = (char *)args;
printf("[%s:%d]%s\n", __func__, __LINE__, s);
return 0;
}
int *f3(void *args)
{
printf("[%s:%d]\n", __func__, __LINE__);
return 0;
}
int *f4(void *args)
{
printf("[%s:%d]\n", __func__, __LINE__);
return 0;
}
int main_run()
{
int i;
void (*func)();
i=1;
func = function[0][0];
func(&i);
func = function[0][1];
func("hello");
func = function[1][0];
func(NULL);
func = function[1][1];
func(NULL);
}
int main()
{
function[0][0] = f1;
function[0][1] = f2;
function[1][0] = f3;
function[1][1] = f4;
main_run();
return 0;
}
函数指针可被当作普通指针一样记录。但是使用时只能强制转换成函数指针。
当被调用时,传入参数可以被定义成万能型的void *,然后在函数内强制转换数据类型。
不过使用环境还没想到,毕竟这种调用有些小众...不容易被人理解。