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

函数指针数组有关问题

2012-03-05 
函数指针数组问题#includeiostreamusingnamespacestd#defineDF(N)voidN(){cout function#N call

函数指针数组问题
#include   <iostream>
using   namespace   std;

#define   DF(N)   void   N(){cout < < "function   "#N "   called " < <endl;}  
DF(a);DF(b);DF(c);DF(d);//这里的作用是什么呢?
void   (*func_table[])()={a,b,c,d};//这里也不是很明白
int   main()
{
while(1){
cout < < "press   a   key   from 'a 'to   'd '   or   q   to   quit " < <endl;
char   c;

cin> > c;

if(c== 'q ')
break;
if(c < 'a '||c> 'd ')
continue;
(*func_table[c- 'a '])();
}
return   0   ;
}

望高人赐教,谢谢:)

[解决办法]
DF(a);DF(b);DF(c);DF(d);//申明并定义了a(),b(),c(),d()四个不带返回直不带参数的函数
可扩展成:
void a(){cout < < "function a called " < <endl;}
void b(){cout < < "function b called " < <endl;}
void c(){cout < < "function c called " < <endl;}
void d(){cout < < "function d called " < <endl;}

 


void (*func_table[])()={a,b,c,d};
扩展成
func_table[0] = a;
func_table[1] = b;
func_table[2] = c;
func_table[3] = d;


于是*func_table[c- 'a ']就掉用了a(),b(),c(),d()中的一个,因此,输出结果因该是
function a called 
function b called 
function c called 
function d called
中的一个
[解决办法]

[解决办法]
up
[解决办法]

#define DF(N) void N(){cout < < "function "#N " called " < <endl;} 声明并定义了a()、b()、c()、d()
N(a)就是调用函数;
void (*func_table[])()={a,b,c,d};等价于
func_table[0] = a; 
func_table[1] = b; 
func_table[2] = c; 
func_table[3] = d; 

[解决办法]
宏是文本替换,这样的话下面的DF(a);DF(b);DF(c);DF(d);就比较好理解了

热点排行