首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数指针传递的有关问题

2012-11-03 
函数指针传递的问题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++ 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……

热点排行
Bad Request.