函数指针传递的有关问题
函数指针传递的问题C/C++ code#include stdio.hint main(){void fun1()int fun3(int a)//规定死了传参
函数指针传递的问题
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++ codeint 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参数的参数
[解决办法]