typedef void (*funcptr)(void) 什么意思

如题所述

定义一个函数指针类型。
比如你有三个函数:
void hello(void) { printf("你好!"); }
void bye(void) { printf("再见!"); }
void ok(void) { printf("好的!"); }

typdef void (*funcptr)(void);
这样就构造了一个通用的函数
你用的时候可以这样:
void speak(int id)
{
funcptr words[3] = {&hello, &bye, &ok};
funcptr fun = words[id];
(*fun)();
}

这样的话,如果speak(0)就会显示“你好!”
speak(1)就会显示“再见!”
speak(2)就会显示“好的!”

用于处理参数和返回值的形式都一样,但是功能不确定的一组函数,可以使用函数指针。

比如算术运算符,加、减、乘、除,都可以用typedef int (*calc)(int,int)代表,等等
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-30
这里是定义了一个指向参数为空,返回值为空的函数的指针类型。
比如:
#include<iostream>
#include<stdlib.h>
using namespace std;

typedef void ( *funcptr)(void); //定义指针类型

void fun1(void) //定义函数一
{
cout << "This is fun1" << endl;
}

void fun2(void) 定义函数二
{
cout << "This is fun2" << endl;
}

int main()
{
funcptr p1; //定义了一个该类型的指针p1
p1 = fun1; //p1指向函数一
p1();

p1 = fun2; //p1指向函数二
p1();

system("pause");
}

/*********************************************/
一看这名字就知道是doter 有空打dota
第2个回答  2017-11-05

typedef 是用来起别名的,

例如:

typedef char* PCHAR;   给char* 指针起了个别名,PCHAR。

PCHAR pa, pb;    声明char* 型指针就可以用PCHAR 来声明。

typedef void (*funcptr)(void)    给void (* )(void)  起了个别名:funcptr。

声名函数指针:void (* )(void),就可以用funcptr 来声明,即: funcptr  fun1;

用void (*funcptr)(void);来直接声明函数指针也行。但是不能写成 funcptr  fun1;

用typedef 可以简化声明,也更清晰。

更详细的描述在 网址  :  

第3个回答  2010-08-03
实际上是指针函数,只要具有相同的参数。就可以用指针函数指向想调用的函数名。执行该指针对象函数即可!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网