注册 登录
编程论坛 C++教室

关于一个函数指针的问题

printflove 发布于 2014-02-23 14:30, 403 次点击
#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);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':"<<endl;
char c,cr;
cin.get(c);
cin.get(cr);
if(c<'a'||c>'g')
continue;
(*func_table[c-'a'])();
}
return 0;
}


当我输入c时,输出functionccalled
这里不解,main函数根本与DF(N)没关系啊,输出应该是一个指向函数的指针啊
2 回复
#2
rjsp2014-02-24 08:29
main函数根本与DF(N)没关系啊,输出应该是一个指向函数的指针啊
------ 两句话都听不懂,把宏展开就是:
程序代码:
#include <iostream>
using namespace std;

void a() { cout << "functionacalled" << endl; }
void b() { cout << "functionbcalled" << endl; }
void c() { cout << "functionccalled" << endl; }
void d() { cout << "functiondcalled" << endl; }
void e() { cout << "functionecalled" << endl; }
void f() { cout << "functionfcalled" << endl; }
void g() { cout << "functiongcalled" << endl; }

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

int main()
{
    (*func_table['c'-'a'])();

    return 0;
}
不知道你说的“main函数根本与DF(N)没关系啊”是什么意思?也不知道你为什么说“输出应该是一个指向函数的指针啊 ”
#3
printflove2014-02-24 09:17
回复 2楼 rjsp
好像有点理解了,确实展开后好看了些。万分感谢啊,一直没人回复,终于看懂了这题
1