由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 新手问个C++(Thinking in C++ source code)
相关主题
[提议]算法coding题目需要太傻那样的黑宝书A家店面栽在一个老中手里
弱问一个关于字符类型转换的一个问题攒RP,也发我的经验与体会
请教:C++, 忽略大小写的字符串比较我的找工历程:CS MS(1)
BB campus interview 4轮面经Listen to My Story(2): C++书籍篇
HashMap, HashTable and Array 有啥区别有什么好的java书
贡献几道A家intern的题看完C++ Primer,
xor cipher面试题求解Job opportunities at Yahoo
airBnb电面面经有没有什么c++比较容易入门的书籍?
相关话题的讨论汇总
话题: df话题: func话题: c++话题: table话题: cr
进入JobHunting版参与讨论
1 (共1页)
w****g
发帖数: 206
1
/thinking in C++/第三章最后一个程序,硬是看不懂, 请高手指点一下:

//: C03:FunctionTable.cpp
// Using an array of pointers to functions
#include
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 };
//以上function定义怎么理解,a,b,...g,是arguments还是statments?
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'])();
//以上一句为什么不能改成:(*func_table[c])();
}
} ///:~
Thanks!
i**********e
发帖数: 1145
2
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
//以上是和前一句, 宏定义一起的么? 怎么解释?
DF是个macro,所以有DF的地方就是复制黏贴。例如DF(a)等于
void a() {
cout << "function a called..." << endl;
}
void (*func_table[])() = { a, b, c, d, e, f, g };
//以上function定义怎么理解,a,b,...g,是arguments还是statments?
a, b, ... g 是 function name。在这里func_table[]array里的pointers被初始化。
ie, func_table[0] = a, func_table[1] = b,...
(*func_table[c - 'a'])();
//以上一句为什么不能改成:(*func_table[c])();
因为c是一个char type,里面的值是ascii code。给个例子:如果 c = ‘e’,因为‘
e'的ascii值是101,所以c-'a'就能得到'e'与'a'的差距, = 4.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com

【在 w****g 的大作中提到】
: /thinking in C++/第三章最后一个程序,硬是看不懂, 请高手指点一下:
:
: //: C03:FunctionTable.cpp
: // Using an array of pointers to functions
: #include
: 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);

w****g
发帖数: 206
3
谢了!
1 (共1页)
进入JobHunting版参与讨论
相关主题
有没有什么c++比较容易入门的书籍?HashMap, HashTable and Array 有啥区别
复习C++ multithreading的书贡献几道A家intern的题
Effective C++搞什么嘛!xor cipher面试题求解
Effective C++ (转载)airBnb电面面经
[提议]算法coding题目需要太傻那样的黑宝书A家店面栽在一个老中手里
弱问一个关于字符类型转换的一个问题攒RP,也发我的经验与体会
请教:C++, 忽略大小写的字符串比较我的找工历程:CS MS(1)
BB campus interview 4轮面经Listen to My Story(2): C++书籍篇
相关话题的讨论汇总
话题: df话题: func话题: c++话题: table话题: cr