c++函数参数或返回值为函数指针
C++中函数指针的形式为:返回值类型 + 参数类型,函数没有值类型,但是却可以声明函数的指针,因为函数是可寻址的,存放在内存中的代码段,可以从指针访问。
函数指针可以声明为:
void (*pF)(void); // ^括号1 // ^括号2
其中pF为参数为空,返回值也为空的函数类型,因为*操作符的优先级低于函数调用操作符,所以必须在*pF外加括号。
那么如何声明返回值为函数指针的函数呢?
先给出一个实例:
void (* fun() )(); // ^ 括号a // ^括号b // ^括号c
该函数的返回值为一个函数指针,解析下这个声明的三个括号分别代表的意义:括号a对应第一个声明中的括号1,括号c对应第一个声明中的括号2,而括号c则是该函数自身的函数调用符,可以在该括号内放入函数参数如:
//参数为一个int类型 void (* fun(int x) )(); //参数为两个int类型 void (* fun(int x, int y) )(); //参数为一个函数指针类型 void (* fun( void (*f)() ) )();
其中第三个例子的参数为一个函数指针,括号比较多,要仔细看才能够看出这个声明的结构。
本文出处:http://www.cnblogs.com/richard-g/
本作品采用知识共享署名 4.0 国际许可协议进行许可,欢迎转载,但是必须保留本文的署名和链接。