函数指针
函数参数的类型不能是函数类型,函数类型的参数将被自动转换成该函数类型的指针。例如
// typedef 表示一个函数类型
typedef int functype( const string &, const string & );
void sort( string *, string *, functype );
编译器把sort()当作已经声明为
void sort( string *, string *, int (*)( const string &, const string & ) );
上面这两个sort()的声明是等价的。
注意,除了用作参数类型之外,函数指针也可以被用作函数返回值的类型。例如
int (*ff( int ))( int*, int );
该声明将ff()声明为一个函数,它有一个int 型的参数,返回一个指向函数的指针,类型为
int (*) ( int*, int );
同样,使用typedef 名字可以使声明更容易读懂。例如,下面的typedef PF 使得我们能更容易地分解出ff()的返回类型是函数指针。
// typedef 使声明更易读
typedef int (*PF)( int*, int );
PF ff( int );
这里C++primer中的一段话,不过看不太懂.
typedef int functype( const string &, const string & );
这句话什么意思?
int (*ff( int ))( int*, int );
这句话实在是看不懂.
它说ff是一个返回函数指针的函数.这个理解不了.
请大家帮忙看一下.
还有,返回一个函数的指针,用在什么地方啊.