首页 > 代码库 > 浅谈指向函数的指针和指针函数
浅谈指向函数的指针和指针函数
指向函数的指针,顾名思义,不用解释。而指针函数是返回值为某一类型指针的函数(这个简单)
指向函数的指针:
写在前面的话,注意指向函数的指针不可以直接拿来写函数体,至于为什么,我还没有搞懂,例如:
int (*comp) (const void*, const void*){} 这样是不行的 无论用comp还是*comp还是(*comp)都不能调用函数!!
假设有以下语句:
typedef bool (*cmpFcn) (const string &, const string &); (C++)
该定义表示cmpFcn是一种指向函数的指针类型的名字,该指针类型为“指向返回bool类型并带有两个const string 引用形参的函数的指针
假设有如下函数:
bool lengthCompare (const string &, const string &);
则可以有:
cmpFcn pf = lengthCompare 或
cmpFcn pf = &lengthCompare
所以指向不同函数类型的指针之间不存在转换
通过指针调用函数 :
lengthCompare ( "hi", "bye");
pf ("hi", "bye");
(*pf) ("hi", "bye");
函数指针形参:
函数的形参可以是指向函数的指针,例如:
void useBigger (const string &, const string &, bool (const string &, const string &));
void useBigger (const string &, const string &, bool (*) (const string &, const string &));
返回指向函数的指针:
请看蛋疼菊紧的玩意儿:
int ( *ff ( int ) ) ( int* , int );
问题来啦:
挖掘机学校到底哪家强??
不是,那个。。错了,正确的问题是:上面的一坨返回的是啥?
我们来分析一下:
将ff声明为一个函数,它带有一个int型的形参,该函数返回的东西是:int (*) ( int*, int );
这是一个指向函数的指针,所指向的函数返回int型并带有两个分别是int*型和int型的形参
将其改写成如下形式:
typedef int ( *PF ) ( int* ,int );
PF ff ( int );
浅谈指向函数的指针和指针函数