void (*func_table[])()={ a, b, c, d, e };是啥?

nihaoma008 2003-08-18 09:17:31
各位高手:
我对C++只是初步了解,有一个简单的问题想请教。有一个程序:
#include <iostream>
using namespace std;

#define DF(N) void N () /
{ cout << "function " #N " called..." << endl; }

DF(a); DF(b); DF(c); DF(d); DF(e);

void (*func_table[])()={ a, b, c, d, e };

int main()
{
while(1)
{
cout << " press a key from 'a' to 'e' or q to quit " << endl;
char c, cr;
cin.get(c); cin.get(cr);
if(c=='q')
break;
if( c<'a' || c>'g' )
continue;
(*func_table[c-'a'])();
}
}
其中的void (*func_table[])()={ a, b, c, d, e };像函数又不太像。这是啥?
请别见笑。
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aflyinghorse 2003-08-18
  • 打赏
  • 举报
回复
#define DF(N) void N () /
{ cout << "function " #N " called..." << endl; }
有错误
应该是
#define DF(N) void N () \ //反斜杠
{ cout << "function " #N " called..." << endl; }
widewave 2003-08-18
  • 打赏
  • 举报
回复
指针数组,成员是函数指针.

DF(a);宏展开后为
void a();
sevecol 2003-08-18
  • 打赏
  • 举报
回复
void (*func_table[])()={ a, b, c, d, e };

是指向函数的指针数组.
类型void (*point)();

a,b,c,d,e都是用
#define DF(N) void N () /
{ cout << "function " #N " called..." << endl; }
定义出来的函数.
aflyinghorse 2003-08-18
  • 打赏
  • 举报
回复
a, b, c, d, e是函数名
由宏产生 define DF(N) void N () /
{ cout << "function " #N " called..." << endl; }

如DF(a); 产生void a(){ cout << "function a called..." << endl; }

void (*func_table[])()={ a, b, c, d, e };是函数指针的数组
func_table是数组名,该数组有5个元素,都是函数指针,分别为a, b, c, d, e
sevecol 2003-08-18
  • 打赏
  • 举报
回复
void (*func_table[])()={ a, b, c, d, e };

是指向函数的指针数组.
类型void (*point)();

a,b,c,d,e都是用
#define DF(N) void N () /
{ cout << "function " #N " called..." << endl; }
定义出来的函数.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧