函数指针传递的有关问题
函数指针传递的问题
怎么才能解决可以传递多个不同类型的参数问题
------解决方案--------------------
首先,fun1、2、3预先声明放在使用者里面是不合适的,这里应该放在main函数的外面。c里面,随便传什么函数指针都可以,关键是,在你调用的地方,你要明确函数指针所代表的函数该怎么传参调用。
------解决方案--------------------
需要修改fun1和fun3为一样的形式,然后再用相同的函数指针类型,比如这样:
- C/C++ code
#include <stdio.h> int main() { void fun1(); int fun3(int a); //规定死了传参类型,怎么样做,可以想传什么函数就传什么函数啊? void fun2(void (*p)()); fun2(&fun1); return 0; } void fun1() { printf("hello!\n"); } int fun3(int a) { printf("%d\n", a); return 0; } void fun2(void (*p)()) { p(); }
怎么才能解决可以传递多个不同类型的参数问题
------解决方案--------------------
首先,fun1、2、3预先声明放在使用者里面是不合适的,这里应该放在main函数的外面。c里面,随便传什么函数指针都可以,关键是,在你调用的地方,你要明确函数指针所代表的函数该怎么传参调用。
------解决方案--------------------
需要修改fun1和fun3为一样的形式,然后再用相同的函数指针类型,比如这样:
- C/C++ code
int fun1(void* p) { printf("hello!\n"); return 0; } int fun3(void* p) { printf("%d\n", *((int*)p)); return 0; }
------解决方案--------------------
这不已经是多种形式的调用吗?void* p可以指向任何参数啊,整型、指针、结构体、联合体和复合结构都是可以传进来的,各自函数具体化处理即可。
------解决方案--------------------
http://topic.csdn.net/u/20120418/00/64c2d59b-151b-450e-a7aa-39ff6bf941a5.html
------解决方案--------------------
重载fun2,写一个支持fun3参数的参数
------解决方案--------------------