程序中不可避免的使用函数指针,各种回调,加强一下理解(一)定义函数指针
// PFN是函数指针char (*PFN)(int);
char gpfn(int val){ cout << val << endl; return 1;}
PFN是一个函数指针 指向char(*)(int)类型的函数指针,这种函数参数是一个int,返回类型是一个char,如果要对它赋值,需要参数和返回类型一致 第二行定义了一个函数glFun()。该函数正好是一个以int为参数返回char的函数。我们要从指针的层次上理解函数——函数的函数名实际上就是一个指针,函数名指向该函数的代码在内存中的首地址。(二)赋值和调用赋值
这两种方法都可用,C++primer上有说明
(三)常见的函数指针的应用标准模板库中的排序啊, 比较啊 都会常用的函数指针比如我们定义了结构体 FightAttr记录了战斗的一些数据,比如连击次数, 战斗得分... 我们只记录了每个人的FightAttr, 如何对他们排序呢struct FightAttr{ Combo combo; Score score; ....};可以用sort 等排序
sort允许使用自己定义的比较函数(第三个参数)
参考blog:
http://www.cnblogs.com/ly4cn/archive/2005/11/28/286185.html
http://ly4cn.cnblogs.com/archive/2005/12/17/299007.html