请教大家C++编程思想第三章有关函数指针的一个问题,谢谢。
P101
using namespace std;
// A macro to define dummy functions:
#define DF(N) void N() { \
cout << "function " #N " called..." << endl; }
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
void (*func_table[])() = { a, b, c, d, e, f, g };
int main() {
while(1) {
cout << "press a key from 'a' to 'g' "
"or q to quit" << endl;
char c, cr;
cin.get(c); cin.get(cr); // second one for CR
if ( c == 'q' )
break; // ... out of while(1)
if ( c < 'a' || c > 'g' )
continue;
(*func_table[c - 'a'])();
}
} ///:~
这个函数指针是怎样被赋值的?
void (*func_table[])() = { a, b, c, d, e, f, g };
这跟void N()有什么关系?为什么会调用void N()呢?
书上说 这是使用"自动集合初始化功能创建指向这些函数的指针数组",不明白!
请大家指点一下,万分感谢。
问题点数:20、回复次数:5Top
1 楼Woody107()回复于 2005-04-09 18:11:05 得分 0
自己顶一下Top
2 楼Woody107()回复于 2005-04-10 09:21:47 得分 0
???Top
3 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-10 09:44:05 得分 20
#define DF(N) void N() { \
cout << "function " #N " called..." << endl; }
DF(a);
//将DF(a)展开
void a(){
cout << "Function a called..."<<endl;}Top
4 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-10 09:46:02 得分 0
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
定义了7个函数,函数名为a,b,c,d,e,f,g
void (*func_table[])() = { a, b, c, d, e, f, g };
函数数组func_table,赋值a~gTop
5 楼Woody107()回复于 2005-04-10 10:41:48 得分 0
Thank you very much!Top




