函数指针传递的有关问题

函数指针传递的问题
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参数的参数
探讨

我只是想知道怎么样修改fun2,它既可以用来调用fun1,又可以用来调用fun3

------解决方案--------------------
探讨
C/C++ code

#include <stdio.h>


int main()
{
void fun1();
int fun3(int a);

//规定死了传参类型,怎么样做,可以想传什么函数就传什么函数啊?
void fun2(void (*p)());

fun2(&amp;fun1);

return……