| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 396 人关注过本帖
标题:关于一个函数指针的问题
只看楼主 加入收藏
printflove
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-21
结帖率:50%
收藏
 问题点数:0 回复次数:2 
关于一个函数指针的问题
#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)没关系啊,输出应该是一个指向函数的指针啊
2014-02-23 14:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:0 
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)没关系啊”是什么意思?也不知道你为什么说“输出应该是一个指向函数的指针啊 ”
2014-02-24 08:29
printflove
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-21
收藏
得分:0 
回复 2楼 rjsp
好像有点理解了,确实展开后好看了些。万分感谢啊,一直没人回复,终于看懂了这题
2014-02-24 09:17
快速回复:关于一个函数指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023401 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved